У меня есть 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.Все они !...
Вау, я не ожидал этого изменения.
Ну, я пытался решить проблему, связанную с изменением методов доступа, например: 1011 *
- (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 десятичных знаков, не используя в словаре что-то кроме числового типа для поля (я имею в виду, использование String не было бы хорошим решением)?
Создание файла plist было сделано вручную, с несколькими часами ввода, вводя эти 7 десятичных значений в каждое поле, и они не были "преобразованы" в тот момент.Они были сохранены с 7 десятичными.Поэтому я думаю, что есть решение сохранить эти 7 десятичных знаков при записи их обратно программой.