為什麼要使用bigdecimal型別呢?
bigdecimal可以進行超過16位有效位的數值的準確運算,而我們所熟知的浮點型float的精度為6-7位有效數字,double型別則為15-16位有效數字。
這不是關鍵,浮點型變數在進行計算的時候會出現丟失精度的問題,所以我們為了保證資料的準確性,需要用到bigdecimal去進行高精度的運算。
bigdecimal的加減乘除:
bigdecimal 的加減乘除不能用簡單的+-*/去做為操作符,而是提供了api供我們呼叫。
下面我們舉個栗子:
通用**:
bigdecimal a = new bigdecimal("10");
bigdecimal c = new bigdecimal("5");
bigdecimal d = null;
加(add)
例:c= a + b
c = a.add(b);
減(substract)
例:c = a - b
c = a.substract(b);
乘(multiply)
例:c = a * b
c = a.multiply(b);
除:(divide)
例:c = a / b
c = a.divide(b);
特別注意:
除法的結果有可能會出現無限迴圈小數,這時候c = a.divide(b)會報錯
non-terminating decimal expansion; no exact representable decimal result
我們需要改動一下,一般情況下保留兩位小數 四捨五入即可:
c = a.divide(b, 2, bigdecimal.round_half_up);
JAVA BigDecimal類 高精度計算
bigdecimal類在計算時能夠精確表示 計算浮點數不會丟失精度。public bigdecimal string val 例項化乙個高精度浮點數 public bigdecimal add bigdecimal augend 加 public bigdecimal subtract bigdec...
java BigDecimal相關操作
在進行涉及金額計算,尤其是金融類的,對資料精度有嚴格的要求,所以這種場景,bigdecimal就派上用場了。一 建構函式 常用的兩種 1 bigdecimal a new bigdecimal 1.17745 傳string bigdecimal b new bigdecimal 5.17745 傳...
Java BigDecimal 一些注意點
float和double型別的主要設計目標是為了科學計算和工程計算。他們執行二進位制浮點運算,這是為了在廣域數值範圍上提供較為精確的快速近似計算而精心設計的。然而,它們沒有提供完全精確的結果,所以不應該被用於要求精確結果的場合。但是,商業計算往往要求結果精確,這時候就要使用bigdecimal啦。b...