用整数除以double

我在将doubleint分开时面临一个问题。 代码段是:

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

res的值是0.10000000000000001而不是0.10

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

你需要阅读经典论文“每个计算机科学家应该知道的关于浮点运算的知识” 。

CPU使用数字的二进制表示。 您的结果无法用二进制表示。 二进制0.1是0.00011001100110011 … CPU在某一点截断它并得到一些舍入错误。

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