BigDecimal工具類
阿新 • • 發佈:2018-12-19
1.BigDecimal型別轉換
注意點:一定要用String型別轉為BigDecimal來進行運算
BigDecimal a = new BigDecimal("0");
a.doubleValue()
a.toString()
double精度運算不準確,需要藉助BigDecimal來運算,並且需要String型別轉為BigDecimal,例子如下:
public static void main(String[] args) { double a = 11.11; double b = 22.22; double c = 0.00; BigDecimal a1 = new BigDecimal(a); BigDecimal b1 = new BigDecimal(b); BigDecimal c1 = new BigDecimal(c); BigDecimal a2 = new BigDecimal(a+""); BigDecimal b2 = new BigDecimal(b+""); BigDecimal c2 = new BigDecimal(c+""); System.out.println(a*b); System.out.println(a1.multiply(b1)); System.out.println(a2.multiply(b2)); System.out.println(c1.multiply(a1.multiply(b1))); System.out.println(c2.multiply(a2.multiply(b2))); } //列印結果如下 /*246.86419999999998 246.8641999999999747387846582569188381446435961153709932880406796584793482907116413116455078125 246.8642 0E-91 0.00000*/
2.BigDecimal相互比較大小
注意點:BigDecimal一定要用compareTo來比較大小
a.compareTo(b)
返回值 -1 小於 0 等於 1 大於
例子如下:
public static void main(String[] args) { double a = 11.11; double b = 22.22; double c = 0.00; double d = 11.11; BigDecimal a1 = new BigDecimal(a+""); BigDecimal b1 = new BigDecimal(b+""); BigDecimal c1 = new BigDecimal(c+""); BigDecimal d1 = new BigDecimal(d+""); System.out.println(a1.compareTo(b1)); System.out.println(a1.compareTo(c1)); System.out.println(a1.compareTo(d1)); } /*列印結果如下 -1 1 0*/
3.BigDecimal相互運算及設定精度
注意點:除法分母不能為0,並且一定要設定精度即保留幾位小數
加:a.add(b)
減:a.subtract(b)
乘:a.multiply(b)
除:a.divide(b)
例子如下:乘法四捨五入保留兩位小數,除法四捨五入保留2位小數
public static void main(String[] args) { double a = 11.11; double b = 22.23; BigDecimal a1 = new BigDecimal(a+""); BigDecimal b1 = new BigDecimal(b+""); System.out.println(a1.add(b1)); System.out.println(a1.subtract(b1)); System.out.println(a1.multiply(b1)); System.out.println(a1.multiply(b1).setScale(2, BigDecimal.ROUND_HALF_UP)); System.out.println(a1.divide(b1, 2, BigDecimal.ROUND_HALF_UP)); } /*列印結果如下 33.34 -11.12 246.9753 246.98 0.50*/