java中BigDecimal的操作辦法。本站提示廣大學習愛好者:(java中BigDecimal的操作辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是java中BigDecimal的操作辦法正文
本文實例講述了java中BigDecimal的操作辦法。分享給年夜家供年夜家參考。詳細剖析以下:
因為double,float的精度不敷,是以在停止貿易盤算的時刻要應用的BigDecimal。BigDecimal對象創立以下:
BigDecimal b = new BigDecimal("12.000001");
System.out.println(b);
輸入成果為:12.000001;
BigDecimal在創立的時刻可以傳入String和double,然則最好應用String,至於緣由看看以下代碼就曉得了:
BigDecimal b = new BigDecimal("12.000001");
System.out.println(b);
BigDecimal c = new BigDecimal(12.01);
System.out.println(c);
運轉成果為:
12.000001
12.0099999999999997868371792719699442386627197265625
可以看出在傳入double的時刻精度會喪失。
BigDecimal其他操作以下:
//加法
public static BigDecimal add(String num1, String num2) {
BigDecimal bd1 = new BigDecimal(num1);
BigDecimal bd2 = new BigDecimal(num2);
return bd1.add(bd2);
}
//減法
public static BigDecimal subtract(String num1, String num2) {
BigDecimal bd1 = new BigDecimal(num1);
BigDecimal bd2 = new BigDecimal(num2);
return bd1.subtract(bd2);
}
//乘法
public static BigDecimal multiply(String num1, String num2) {
BigDecimal bd1 = new BigDecimal(num1);
BigDecimal bd2 = new BigDecimal(num2);
return bd1.multiply(bd2);
}
//除法
public static BigDecimal divide(String num1, String num2, int i) {
BigDecimal bd1 = new BigDecimal(num1);
BigDecimal bd2 = new BigDecimal(num2);
// i是要保存的位數, BigDecimal.ROUND_HALF_UP 表現四捨五入的規矩
return bd1.divide(bd2, i, BigDecimal.ROUND_HALF_DOWN);
}
須要強調一下除法,第三個參數為能否四捨五入,
ROUND_HALF_DOWN表現遇5不進1,即1.5->1;
ROUND_HALF_UP表現遇5進1,即1.5->2;
然則有點須要留意:
當我們應用ROUND_HALF_DOWN時
System.out.println(this.divide("67.75", "5",4));
System.out.println(this.divide("67.75", "5",1));
System.out.println("-------");
System.out.println(this.divide("67.751", "5",4));
System.out.println(this.divide("67.751", "5",1));
運轉成果以下:
13.5500
13.5
-------
13.5502
13.6
我就疑惑了,按事理第二個成果應當是13.5啊!怎樣成了13.6。後來經由屢次測試,想了一下,這個四捨五入不是依照精度位前面移位與5做比擬,而是依照精度位後的一切的數據與5做比擬,也就是說:13.5500准確到一名,則用0.0500與5比擬,而13.5502准確到一名,則用0.0502與5比擬,比5年夜,所以就向上收。
願望本文所述對年夜家的Java法式設計有所贊助。