【发布时间】:2014-09-06 22:52:34
【问题描述】:
好的团队,这很奇怪。 [NSDecimalNumber integerValue] 行为异常。
我正坐在断点处,试图找出为什么我的应用程序的某些部分在 iOS8 中被破坏,我正在查看一个名为“timeSeconds”的变量。它在 Xcode 变量视图中如下所示:
_timeSeconds (NSDecimalNumber *) 344.514533996581994496
但是当我在调试器中查询它时,我看到了这个:
(lldb) p [self.timeSeconds doubleValue]
(double) $14 = 344.51453399658192
(lldb) p [self.timeSeconds intValue]
(int) $15 = 344
(lldb) p [self.timeSeconds integerValue]
(NSInteger) $16 = -5
(lldb) p (NSInteger)[self.timeSeconds intValue]
(NSInteger) $17 = 344
看到那个“-5”了吗?在我提交雷达之前,你们中的任何一个漂亮的人都可以复制或解释一下吗?
这里是 SSCCE:
NSDecimalNumber *n = [NSDecimalNumber decimalNumberWithString:@"344.514533996581994496"];
NSLog(@"%@", n); // 344.514533996581994496
NSLog(@"%ld", (long)[n intValue]); // 344
NSLog(@"%ld", (long)[n integerValue]); // -5
NSLog(@"%ld", (long)[n unsignedIntegerValue]); // 12
提前致谢!
马修
【问题讨论】:
-
马修 - 你发现了什么? iOS 8 上的 NSDecimalNumber 在我的实时应用程序中造成了巨大的问题!
标签: objective-c ios8 nsdecimalnumber