0

我在将 adouble与 a 分开时遇到了一个问题int。代码片段是:

  double db = 10;
  int fac = 100;
  double res = db / fac;

res 的值0.10000000000000001不是0.10.

有谁知道这是什么原因?我正在使用 cc 来编译代码。

4

3 回答 3

10

您需要阅读经典论文What Every Computer Scientist Should Know About Floating-Point Arithmetic

于 2010-06-16T06:40:20.987 回答
4

CPU 使用数字的二进制表示。您的结果不能以二进制精确表示。二进制中的 0.1 是 0.00011001100110011 ... CPU 在某个点截断它并得到一些舍入误差。

于 2010-06-16T06:41:12.893 回答
0

double 是浮点运算符,它们不提供精确值。在谷歌上查找精度和浮点运算符。

于 2010-06-16T06:36:51.857 回答