我的工作應該輸出22258199.5000000這個號碼,我已存儲的結果在雙數據類型的一些C++的問題,當我試圖在使用變量的std ::法院就四捨五入到22258200.0000000,我不知道爲什麼就是打印這發生?有人可以解釋嗎?我能做些什麼來避免這個問題?如何避免大浮點或雙精度值的舍入?
1
A
回答
3
一個32位float
型保持大約7位十進制數字,和任何超出將被舍入到最接近的可表示值。
64位double
類型保存大約15個十進制數字,並且還四捨五入超出值。
由於您的值四捨五入到最接近的7位號碼,看來您使用的是float
變量的地方。將float
值複製到double
不會恢復丟失的數字。
這並不適用於你的榜樣,但它可能在其他 - 發生的舍入二進制,不是小數,所以你可能最終似乎包含更多的數字比我上面所指出的值。只要知道只有前7或15將準確的十進制。
+0
我發現問題,這是造成這個問題的cout流,我只使用double,但它使用cout打印時四捨五入。我使用cout.precision(15)來設置精度,它工作正常。 –
相關問題
- 1. 單精度大端浮點值到Python浮點數(雙精度,大端)
- 2. 手動解析雙精度時避免舍入誤差
- 3. 在將雙精度值插入字符串流時避免舍入
- 4. 舍入貨幣的雙精度值
- 5. 在MIPS中舍入雙精度浮點數
- 6. 雙精度浮點值傳遞雙精度時
- 7. 如何避免在Python中舍入浮點數?
- 8. 雙精度和單精度浮點數?
- 9. 爪哇 - 雙精度浮點
- 10. 浮點精度:JDBC,double和DECIMAL,如何避免丟失?
- 11. 雙精度浮點數和其他浮點數精度
- 12. 如何將雙精度值舍入爲最接近的整數
- 13. 雙精度浮點數如何轉換爲單精度浮點格式?
- 14. OpenCL中最小/最大浮點數或雙精度常數
- 15. 浮點值的舍入
- 16. 如何比較浮點數或雙精度?
- 17. 避免算法中的浮點精度錯誤
- 18. 四捨五入可以避免Java浮點危害嗎?
- 19. 無法在Scala中寫入雙精度浮點和雙精度浮點數的方法
- 20. 雙精度和浮點的含義?
- 21. Java中的雙精度浮點型
- 22. c中的浮點數和雙精度#
- 23. 浮點精度和刪除計劃中的舍入錯誤
- 24. 使用java.math.BigDecimal避免浮點精度問題
- 25. 如何控制雙精度計算以避免C++ linux x86_64中的舍入錯誤?
- 26. MongoDB浮點值精度?
- 27. 浮點和雙精度恆定比較
- 28. 將雙精度轉換爲浮點數
- 29. Objective-C浮點數/雙精度
- 30. 浮點舍入,位串和二進制精度
請**用[mcve]或[SSCCE(Short,Self Contained,Correct Example)](http://sscce.org)您的問題 – NathanOliver
您幾乎可以肯定地使用'float '類型,轉換或某處的常量 - 這是最接近原始值的單精度值。 –
將cout的精度設置爲15個有效數字:對於浮點雙精度數的一個很好的經驗法則。如果你使用'浮動',那麼你的運氣不好。 – Bathsheba