小编Sul*_*van的帖子

在CoreData中设置时,双NSNumber不准确(使用RestKit)

我已经定义的价格在我的CoreData对象的LineItem是一个,但设置或使用的价值的价格,我只能用NSNumber的包装,这是CoreData是如何工作的,它只是罚款.

但是我在设置数字时发现了准确性问题.

例如,我有一个来自UITextField数字输入的double:

[self.lineItem setPriceValue:round([_finalPrice doubleValue]*100)/100]; // This actually trivial since it is already 83.99 as you see in the log but doesn't affect the result.

NSLog(@"Price to set: %@", _finalPrice);
NSLog(@"Price set: %@", [self.lineItem price]);
Run Code Online (Sandbox Code Playgroud)

这是日志:

2014-03-30 21:03:24.207 MyApp[20998:60b] Price to set: 83.99
2014-03-30 21:03:24.207 MyApp[20998:60b] Price set: 83.98999999999999
Run Code Online (Sandbox Code Playgroud)

这看起来像那些小数小故障之一,除了我没有真正使用过小数的事实.RestKit有可能在某处使用它,这是我无法控制的,但我对此表示怀疑.

同时它在我的应用程序中引起问题,因为它是一个商业应用程序,我与之交谈的API只读取83.98999999999999为83.98,在每个涉及这些有问题的数字的交易中造成一两次折扣.

core-data objective-c nsnumber

2
推荐指数
1
解决办法
579
查看次数

标签 统计

core-data ×1

nsnumber ×1

objective-c ×1