【问题标题】:NSDecimalNumber compare failsNSDecimalNumber 比较失败
【发布时间】:2012-07-31 21:08:13
【问题描述】:

为什么是result NSOrderedDescending

NSDecimalNumber *decimal = [[NSDecimalNumber alloc] initWithString:@"2.6"];

NSComparisonResult result = [decimal compare:[NSNumber numberWithFloat:2.6]];

【问题讨论】:

  • 我敢打赌这是一个内部舍入问题。你试过@"2.60" 和 2.6 吗?
  • 谢谢马克。以为我使用 NSDecimalNumber 很聪明,但这个舍入错误的事情运行得更深。最终使用 NSDecimal。

标签: objective-c ios


【解决方案1】:

2.6 不能准确地表示为浮点数,但NSDecimal 可以准确地表示这个值(这就是我们首先需要 NSDecimals 的原因)。

根据IEEE 754 Calculator2.6 转换为2.5999999046325684,小于2.6,因此与NSOrderedDescending 进行比较。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2017-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-04
  • 2011-07-09
  • 1970-01-01
相关资源
最近更新 更多