【问题标题】:Xcode Obj-C Why is 7/10 not 0.7Xcode Obj-C 为什么 7/10 不是 0.7
【发布时间】:2011-03-09 00:39:57
【问题描述】:
int a=7
int b=10
float answer = (float)a/b;

answer=0.699999988(我预计 0.7 ??)

【问题讨论】:

标签: iphone objective-c xcode floating-point


【解决方案1】:

这是因为浮点计算不精确。

【讨论】:

    【解决方案2】:

    简短的版本是:浮点数不准确,它只是有限的比特集,有限的比特集不能用来表示无限的数字集。

    更长的版本在这里:What Every Computer Scientist Should Know About Floating-Point Arithmetic

    另见:

    How is floating point stored? When does it matter?

    Why is my number being rounded incorrectly?

    【讨论】:

      【解决方案3】:

      浮点数仅精确到特定的有限位数精度。您需要进行一些舍入以获得整数。

      如果您需要更高的精度,请使用双精度数据类型或 NSDecimal 类(这会以复杂性为代价保留您的十进制数字)。

      【讨论】:

        【解决方案4】:

        我唯一依赖的是精确的小整数的存在(即-2、-1、0、1、2,你可能会用它来表示[0,1]加上一些特殊值),还有一些人也不喜欢使用它。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-09-11
          • 1970-01-01
          • 2013-07-10
          • 1970-01-01
          • 2014-08-19
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多