java中關於資料精度問題
java中特別在銀行內使用資料時,對資料的精度要求比較高,這個時候通常使用Bigdecimal類來提高資料的精度,但是由於在程式碼開發過程中會遇到一些開發人員將該資料進行double或者long的轉換,從來導致精度的錯誤,舉例如下:
BigDecimal a = new BigDecimal("569.56");
double m = a.doubleValue();
System.out.println(m);
double m1 = a.doubleValue()*100;
System.out.println(m1);
這時輸出的m 為569.56,m1為56955.99999999999,在銀行系統中不注意的化,在檔案處理中就會捨棄後面的小數尾數,從而導致少了一分錢。
因此在使用高精度資料的時候建議使用Bigdecimal類的原始的包含方法處理,具體整理如下:
add(BigDecimal)BigDecimal物件中的值相加,然後返回這個物件。 subtract(BigDecimal)BigDecimal物件中的值相減,然後返回這個物件。 multiply(BigDecimal)BigDecimal物件中的值相乘,然後返回這個物件。 divide(BigDecimal)BigDecimal物件中的值相除,然後返回這個物件。 toString()將BigDecimal物件的數值轉換成字串。 doubleValue()將BigDecimal物件中的值以雙精度數返回。
在牽扯到位移的時候使用movePointRight或者movePointLeft的方式