以下代碼段輸出0.29847當我本來期望0.29848:C++中的setprecision round嗎?如果是這樣,我爲什麼看到這個?
double f = 0.298475;
cout << setprecision(5) << f << endl;
關於其他例子,但是,我發現舍入:
double f = 0.123459;
cout << setprecision(5) << f << endl;
輸出:0.12346
和
double f = 0.123454;
cout << setprecision(5) << f << endl;
輸出:0.12345
0.298474999999999990318855225268634967505931854248046875。 – dan04
換句話說,實際上有兩個舍入步驟:一個是字面'0.298475'轉換爲'double',另一個是當打印一些數字到'cout'時。 – aschepler
@ dan04:這是一個毫無意義的顯示;一個64位IEEE754浮點只包含大約17位十進制數字的信息...... –