我有2個數字存儲爲Double,1.4300和1.4350。當我減去1.4350 - 1.4300時,它給了我結果:0.0050000000000001155。爲什麼它將1155添加到最後,我如何解決這個問題,以便返回0.005或0.0050?我不確定四捨五入將會發揮作用,因爲我正在處理2個和4個十進制數。雙計算產生奇數結果
2
A
回答
12
哦,我喜歡這些......這些都是由雙重表示中的不準確性造成的,浮點算術充滿了這些。它通常是由二進制循環數引起的(即基2浮點表示)。例如,小數1/3 = 0.3333'二進制1/10是一個循環數,這意味着它不能完美表示。試試這個:1 - 0.1 - 0.1 - 0.1 - 0.1。你不會得到0.6 :-)
要解決這個問題,可以使用BigDecimal(首選)或者通過首先將它乘以10000之類的東西來操作double,然後將其舍入並再次分開(不太乾淨)。
好問題......它在過去造成了巨大的問題。導彈超過目標,衛星發射後崩潰等。在網絡上搜索一些,你會驚訝!
2
4
相關問題
- 1. cuda,addAtomic產生奇數結果
- 2. 奇怪的計算結果
- 3. 同樣的計算結果如何產生不同的結果
- 4. CSS產生奇怪的結果
- 5. Android,結果startAcitivity產生奇怪的流
- 6. Snakemake:規則產生奇怪的結果
- 7. jquery動畫產生奇怪的結果
- 8. String.slice!產生奇怪的結果
- 9. Math.Atan2會產生奇怪的結果嗎?
- 10. openMVG + MeshLab產生奇怪的結果
- 11. PHP計算產生負數?
- 12. 奇怪的錯誤與計算結果
- 13. 奇怪的計算結果的Objective-C
- 14. 的Objective-C:奇怪的計算結果
- 15. 查詢優化以產生計算結果
- 16. QGIS斜率計算器不能產生預期結果
- 17. 天計算器不總是產生準確的結果
- 18. Uri.TryCreate不會產生結果,我預計
- 19. JavaScript函數轉換毫秒產生奇怪的結果
- 20. 並行循環和隨機產生奇數結果
- 21. 簡單的字數MapReduce示例產生奇怪的結果
- 22. CSS選擇器第n個孩子產生奇數結果
- 23. xslt傳遞位置作爲參數產生奇怪的結果?
- 24. 雙減運算結果
- 25. 生日計算結果爲空
- 26. 平等運算符,奇數結果?
- 27. MySQL的計數加入雙結果
- 28. 衍生產品計算器
- 29. 與浮點數相比,雙產生奇數輸出
- 30. 計算累計仰角增益給我更奇妙的結果
你是否認真對待導彈和衛星?還是那個諷刺? – medopal
http://ima.umn.edu/~arnold/455.f96/disasters.html以及 http://www.theinquirer.net/inquirer/news/1047844/floating-point-bugs-explode (只有兩個我可以找到...) –