-4
A
回答
2
一個常見的錯誤正在呼叫
double d = ....
BigDecimal bd = new BigDecimal(d);
例如
BigDecimal bd = new BigDecimal(0.1);
System.out.println(bd);
打印
0.1000000000000000055511151231257827021181583404541015625
這產生了雙的精確表示這通常是不想要的結果。相反,你應該使用
double d = ....
BigDecimal bd = BigDecimal.valueOf(d);
由於這將產生的BigDecimal在最短的十進制值這將是該double
BigDecimal bd = BigDecimal.valueOf(0.1);
System.out.println(bd);
打印
0.1
1
如果準確,你的意思是精密:
精度不能是無限的(或者你應該使用另一個符號表示)。
當您使用某些功能:
1,你必須定義精度(這是非常大的)。
2你也必須考慮舍入模式。
而且在很多情況下,如果您重複使用值進行進一步計算,數學庫不能預測精度結果。所以你必須跟蹤精度。
實施例1/3和100小數:
// 1/3
BigDecimal one=new BigDecimal(1);
BigDecimal three=new BigDecimal(3);
BigDecimal one_third=one.divide(three,100,RoundingMode.HALF_DOWN); // third parameter is round mode
System.out.println("1/3="+one_third);
給出:
三分之一= 0.3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333
+1
您總是需要考慮是否起訴雙倍或大倍數。 +1 –
+0
謝謝。我把一些「精確」。 +1 –
相關問題
- 1. 太精確的變量類型?
- 2. Android開發,Java中的精確計算?
- 3. 精確計算雙精度
- 4. Java精確計算 - 使用選項
- 5. java算法精度計算
- 6. 計算變量的類
- 7. C型任意精度計算器通過變量
- 8. Java變量類型
- 9. 在DEC的變量集合中計算小數的星期精確的數量
- 10. 精確計算和繪圖
- 11. 計算不精確,Redshift,postgresql
- 12. 精確角度計算
- 13. C#精確浮點型變量
- 14. java中變量的類型
- 15. vb.net變量計算不正確的值
- 16. 確定變量類型
- 17. 精確的Python 2.7計算包括Pi
- 18. 極限matlab計算的精確性
- 19. 計算精確的Ibeacon距離
- 20. 計算精確的速度使用GPS
- 21. Android - 精確的數學計算
- 22. Java通用類型變量
- 23. Java「新鮮類型變量」
- 24. 計算變量
- 25. PHP變量不能正確計算
- 26. Java PathIterator - 如何精確計算Shape對象的中心?
- 27. 從類中調用計算的變量
- 28. 精確定時大數據集計算的線程數量?
- 29. 變量不正確;分數計算器; JAVA
- 30. 涉及多種類型變量的計算
BigDecimal具有任意精度。定義「不準確」。 – azurefrog
[在Java中保留精度和雙精度]可能的重複(http://stackoverflow.com/questions/322749/retain-precision-with-double-in-java) – saljuama
這是一個常見的誤解,您需要'BigDecimal'或我將使用'BigDecimal'修復所有使用'double'的恕我直言的問題,這使得在許多情況下發現錯誤更困難,而且速度更慢。 –