可能是重复问题:
浮点数不精确的例子
double a = 0.3;
std::cout.precision(20);
std::cout << a << std::endl;
结果:0.2999999999999999889
double a, b;
a = 0.3;
b = 0;
for (char i = 1; i <= 50; i++) {
b = b + a;
};
std::cout.precision(20);
std::cout << b << std::endl;
结果:15.000000000000014211
所以,'a'比应该小。 但是如果我们将'a'取50次 - 结果将比应该大。
为什么会这样? 如何在这种情况下得到正确的结果?