2012-06-06 55 views

回答

16

數量0.298475不是在double精確表示的(因爲它不是一個分數分母爲2的冪,是40000分之11939),以及存儲在實際數量實際上比接近0.29847到0.29848。

+4

0.298474999999999990318855225268634967505931854248046875。 – dan04

+1

換句話說,實際上有兩個舍入步驟:一個是字面'0.298475'轉換爲'double',另一個是當打印一些數字到'cout'時。 – aschepler

+2

@ dan04:這是一個毫無意義的顯示;一個64位IEEE754浮點只包含大約17位十進制數字的信息...... –

1

從文檔setprecision()中可以看到,不會執行任何舍入,只是設置小數點後顯示的最大位數。 double和float數的可能表示可能與您使用的常量初始值設定項不同。準確地說,是

相關問題