在Java將double轉型BigDecimal注意事項
這篇介紹在Java將double轉型BigDecimal注意事項。
incorrect Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| float a = 57.3f;
BigDecimal decimalA = new BigDecimal(a);
System.out.println(decimalA);
Output:57.299999237060546875
----------------------------------------------------------- double b = 57.3;
BigDecimal decimalB = new BigDecimal(b);
System.out.println(decimalB);
Output:57.2999999999999971578290569595992565155029296875
結論:避免直接使用new BigDecimal(double) or new BigDecimal(float)
|
correct Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| double c = 57.3;
BigDecimal decimalC = new BigDecimal(Double.toString(c));
System.out.println(decimalC);
Output:57.3
----------------------------------------------------------- double d = 57.3;
BigDecimal decimalD = BigDecimal.valueOf(d);
System.out.println(decimalD);
Output:57.3
結論:建議使用new BigDecimal(Double.toString(c)) and BigDecimal.valueOf(d)
|