I have a PList that contains a dictionary with some decimal values like 10.1234567, stored as Number type (tag ).
In my app, I read that plist and manipulate those values as NSNumber (double type values) with a custom class and its accessors :
@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
在某些情况下,我重新在磁盘上写了该名单。
几个小时前,我注意到,这些价值已经转变,现为10.12345669999999999。 ......
Woaw,我没有预料这一变化。
Well, I ve tried to contain the problem changing the accessors with many thing, like for example this one :
- (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个小小数,而不必将数字类别以外的东西用于字典(我指的是,用“强硬”作为好的解决办法)?
这份清单文件是用手制作的,有几小时的打字,打上了每个领域的7个伊斯兰价值观的打字,当时它们是“变相”的。 他们储存着7名mal。 因此,我猜测,在用方案写回这7名神职人员时,可以找到解决办法。