#include <iostream>
using namespace std;
int main()
{
cout.precision(32);
float val = 268433072;
float add = 13.5;
cout << "result =" << (val + add) << endl;
}
我編譯上述程序與標準g++ main.cc
並用./a.out
怪異c + +浮動錯誤
但是我接收,是在輸出中運行它,
result =268433088
顯然,這是不是正確的答案。這是什麼情況?
編輯:在場所使用double
時的float
您可能想閱讀[每位計算機科學家應該瞭解的浮點算術知識](http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html)。 –
關於浮點問題的另一個很好的解讀:http://stackoverflow.com/questions/1089018/why-cant-decimal-numbers-be-represented-exactly-in-binary – mtrw
你期望什麼行爲呢? (我的意思是,從你嘗試使用'float'和'double'的事實,你顯然意識到'float'的精確度有限......) – ruakh