【问题标题】:float unusual behaviour Objective c [duplicate]浮动异常行为目标c [重复]
【发布时间】:2015-05-02 22:33:05
【问题描述】:

我在目标 C 中遇到了一个与 float 不同的问题。我输入 100.1 并得到 100.100002 不应该是这样的吗100.100000 .

下面是代码

float temp=100.1;
NSLog(@"%f",temp); 

100.100000

有人可以指导我做错了什么或如何解决它吗?我不能使用固定小数位,即我不能只使用 100.10 。我需要所有小数位。

【问题讨论】:

  • 浮点标签的摘要说“如果您的问题是关于小的算术或十进制转换错误,请阅读下面链接的“了解更多...”页面”。 stackoverflow.com/questions/tagged/floating-point
  • 在你能告诉我们你不使用双精度的充分理由之前,你永远不应该使用浮点数。
  • @gnasher729 - 在你知道“浮点”是什么意思之前,你永远不应该使用 double。

标签: ios objective-c floating-point


【解决方案1】:

因为这是当您以二进制形式表示任意 floating point value 时发生的事情的基本部分。二进制位数是有限的,因此会发生舍入。根据您的需要,您最好使用NSDecimalNumber

【讨论】:

    【解决方案2】:

    尝试改用double

    double temp=100.1;
    NSLog(@"%.8f",temp);
    
    100.10000000
    

    这是表示准确性的问题。我认为改用double 不会有问题。

    【讨论】:

      猜你喜欢
      • 2013-10-04
      • 1970-01-01
      • 2010-09-10
      • 2015-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-23
      相关资源
      最近更新 更多