重複の可能性:
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 と整数は、他のフロートとは異なる方法で表現されているようです。それとも、これはioライブラリで起こっていることですか?この動作の原因は何ですか?