可能重复:
C++ 双精度和四舍五入
代码:
int main(void)
{
double a = 12;
double b = 0.5;
double c = 0.1;
std::cout.precision(25);
std::cout << a << std::endl;
std::cout << b << std::endl;
std::cout << c << std::endl;
std::cout << a + b << std::endl;
std::cout << a + c << std::endl;
return 0;
}
输出:
12
0.5
0.1000000000000000055511151
12.5
12.09999999999999964472863
为什么 GCC 代表 0.1 和 0.5 不同?添加时,它们的表示方式不同。似乎 0.5 和整数 a 的表示方式与其他浮点数不同。或者这只是 io 库中发生的事情?是什么导致了这种行为?