Имам PList, който съдържа речник с някои десетични стойности като 10.1234567, съхранени като тип номер (таг).
В моето приложение чета този plist и манипулирам тези стойности като NSNumber (стойности от двоен тип) с персонализиран клас и неговите аксесоари:
@interface
...
@property(nonatomic, assign) NSNumber* someValue;
...
@end
@implementation
...
- (NSNumber*) someValue { return [self.dict objectForKey:@"val"]; }
- (void) setSomeValue:(NSNumber*)val { [self.dict setValue:val forKey:@"val"]; }
...
@end
Тогава в някои случаи записвам обратно на диска plist.
Забелязах преди няколко часа, че тези стойности, да речем, бяха преобразувани и сега са нещо като 10,123456699999999. Всички тях ! ...
Уау, не очаквах тази промяна.
Е, опитах се да овладея проблема с промяната на аксесоарите с много неща, като например това:
- (NSNumber*) someValue { return [self.dict objectForKey:@"val"]; }
- (void) setSomeValue:(NSNumber*)val { [self.dict setValue:
[NSNumber numberWithDouble:[[NSString stringWithFormat:@"%.7lf", [val doubleValue]] doubleValue]]
forKey:@"val"]; }
Но не мога да запазя тези стойности с първоначалните им 7 знака след десетичната запетая.
Как мога да направя, за да напиша само 7 знака след десетичната запетая, без да се налага да използвам нещо друго освен числов тип за полето в речника (имам предвид, че използването на низ не би било добро решение)?
Създаването на plist файла беше направено на ръка, с няколко часа писане, въвеждане на тези 7 десетични стойности във всяко поле и те не бяха "преобразувани" в този момент. Те бяха съхранени със 7 знак след десетичната запетая. Така че предполагам, че има решение да запазите тези 7 знака след десетичната запетая, когато ги записвате обратно от програма.