用整数除以double
我在将double
与int
分开时面临一个问题。 代码段是:
double db = 10; int fac = 100; double res = db / fac;
res的值是0.10000000000000001
而不是0.10
。
有谁知道这是什么原因? 我正在使用cc来编译代码。
你需要阅读经典论文“每个计算机科学家应该知道的关于浮点运算的知识” 。
CPU使用数字的二进制表示。 您的结果无法用二进制表示。 二进制0.1是0.00011001100110011 … CPU在某一点截断它并得到一些舍入错误。
double是浮点运算符,它们不提供精确值。 在谷歌上查找精确和浮点运算符。