1 public BigDecimal add(BigDecimal value);? ?public static double add(double value1,double value2){ ????????? BigDecimal b1 = new BigDecimal(Double.valueOf(value1)); ???????? BigDecimal b2 = new BigDecimal(Double.valueOf(value2)); ???????? return b1.add(b2).doubleValue();} //加法 2 public BigDecimal subtract(BigDecimal value);?????????????????? //減法 3 public BigDecimal multiply(BigDecimal value);?????????????????? //乘法 4 public BigDecimal divide(BigDecimal value);???????????????????? //除法
?
測試參數類型為double和String的兩個常用構造函數 ?????? BigDecimal aDouble =new BigDecimal(1.22); ??????? System.out.println("construct with a double value: " + aDouble);
??????? BigDecimal aString = new BigDecimal("1.22"); ???????? System.out.println("construct with a String value: " + aString); 輸出結果如下: ???????? construct with a double value: 1.219999 ???????? construct with a String value: 1.22 String 構造方法是完全可預知的,通常建議優先使用String構造方法
2017-02-23
精度問題,可以用BigDecimal計算,就不會有這種情況了
2017-04-01
保留小數:java DecimalFormat format 方法的使用
? 1:new DecimalFormat("00.000").format(pi) //結果:03.142
??? 比實際數字的位數多,不足的地方用0補上。
??? new DecimalFormat("00.00").format(3.14)? //結果:03.14
??? new DecimalFormat("0.000").format(3.14)? //結果: 3.140
??? 比實際數字的位數少:整數部分不改動,小數部分,四舍五入
??? new DecimalFormat("0.000").format(13.146)? //結果:13.146
??? new DecimalFormat("00.00").format(13.146)? //結果:13.15
??? 2:new DecimalFormat("##.###").format(pi) //結果:3.142
??? 比實際數字的位數多,不變。
??? new DecimalFormat("##.###").format(3.14)? //結果:3.14
??? 比實際數字的位數少:整數部分不改動,小數部分,四舍五入
??? new DecimalFormat("#.##").format(13.146)? //結果:13.15
2017-04-01
采用java.math.BigDecimal類來進行精確計算。
????????? 在使用BigDecimal類來進行計算的時候,主要分為以下步驟:
????????????? 1、用float或者double變量構建BigDecimal對象。
???????????? 2、通過調用BigDecimal的加,減,乘,除等相應的方法進行算術運算。
???????????? 3、把BigDecimal對象轉換成float,double,int等類型。
????????? 一般來說,可以使用BigDecimal的構造方法或者靜態方法的?valueOf()方法把基本類型的變量構建成BigDecimal對象。
?1 BigDecimal b1 = new BigDecimal(Double.toString(0.48));
?2 BigDecimal b2 = BigDecimal.valueOf(0.48);??????? 對于常用的加,減,乘,除,BigDecimal類提供了相應的成員方法。
1 public BigDecimal add(BigDecimal value);?
?public static double add(double value1,double value2){
????????? BigDecimal b1 = new BigDecimal(Double.valueOf(value1));
???????? BigDecimal b2 = new BigDecimal(Double.valueOf(value2));
???????? return b1.add(b2).doubleValue();}
//加法
2 public BigDecimal subtract(BigDecimal value);?????????????????? //減法
3 public BigDecimal multiply(BigDecimal value);?????????????????? //乘法
4 public BigDecimal divide(BigDecimal value);???????????????????? //除法
?
測試參數類型為double和String的兩個常用構造函數
?????? BigDecimal aDouble =new BigDecimal(1.22);
??????? System.out.println("construct with a double value: " + aDouble);
??????? BigDecimal aString = new BigDecimal("1.22");
???????? System.out.println("construct with a String value: " + aString);
輸出結果如下:
???????? construct with a double value: 1.219999
???????? construct with a String value: 1.22
String 構造方法是完全可預知的,通常建議優先使用String構造方法
BigDecimal都是不可變的(immutable)的,在進行每一步運算時,都會產生一個新的對象,所以在做加減乘除運算時千萬要保存操作后的值。
java BigDecimal比較大小
比較大小可以用 a.compareTo(b)
返回值??? -1 小于?? 0 等于??? 1 大于
BigDecimal取其中最大、最小值、絕對值、相反數:
a.max (b) //比較取最大值
a.min(b) //比較取最小值
a.abs()//取最絕對值
a.negate()//取相反數
?
?
?
?
2017-02-22
精度問題吧,我記得可以有個叫PI的方法
2017-02-22
是精度問題,有點記不清了,希望有幫助