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);???????????????????? //除法
?
測(cè)試參數(shù)類(lèi)型為double和String的兩個(gè)常用構(gòu)造函數(shù) ?????? 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); 輸出結(jié)果如下: ???????? construct with a double value: 1.219999 ???????? construct with a String value: 1.22 String 構(gòu)造方法是完全可預(yù)知的,通常建議優(yōu)先使用String構(gòu)造方法
2017-02-23
精度問(wèn)題,可以用BigDecimal計(jì)算,就不會(huì)有這種情況了
2017-04-01
保留小數(shù):java DecimalFormat format 方法的使用
? 1:new DecimalFormat("00.000").format(pi) //結(jié)果:03.142
??? 比實(shí)際數(shù)字的位數(shù)多,不足的地方用0補(bǔ)上。
??? new DecimalFormat("00.00").format(3.14)? //結(jié)果:03.14
??? new DecimalFormat("0.000").format(3.14)? //結(jié)果: 3.140
??? 比實(shí)際數(shù)字的位數(shù)少:整數(shù)部分不改動(dòng),小數(shù)部分,四舍五入
??? new DecimalFormat("0.000").format(13.146)? //結(jié)果:13.146
??? new DecimalFormat("00.00").format(13.146)? //結(jié)果:13.15
??? 2:new DecimalFormat("##.###").format(pi) //結(jié)果:3.142
??? 比實(shí)際數(shù)字的位數(shù)多,不變。
??? new DecimalFormat("##.###").format(3.14)? //結(jié)果:3.14
??? 比實(shí)際數(shù)字的位數(shù)少:整數(shù)部分不改動(dòng),小數(shù)部分,四舍五入
??? new DecimalFormat("#.##").format(13.146)? //結(jié)果:13.15
2017-04-01
采用java.math.BigDecimal類(lèi)來(lái)進(jìn)行精確計(jì)算。
????????? 在使用BigDecimal類(lèi)來(lái)進(jìn)行計(jì)算的時(shí)候,主要分為以下步驟:
????????????? 1、用float或者double變量構(gòu)建BigDecimal對(duì)象。
???????????? 2、通過(guò)調(diào)用BigDecimal的加,減,乘,除等相應(yīng)的方法進(jìn)行算術(shù)運(yùn)算。
???????????? 3、把BigDecimal對(duì)象轉(zhuǎn)換成float,double,int等類(lèi)型。
????????? 一般來(lái)說(shuō),可以使用BigDecimal的構(gòu)造方法或者靜態(tài)方法的?valueOf()方法把基本類(lèi)型的變量構(gòu)建成BigDecimal對(duì)象。
?1 BigDecimal b1 = new BigDecimal(Double.toString(0.48));
?2 BigDecimal b2 = BigDecimal.valueOf(0.48);??????? 對(duì)于常用的加,減,乘,除,BigDecimal類(lèi)提供了相應(yīng)的成員方法。
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);???????????????????? //除法
?
測(cè)試參數(shù)類(lèi)型為double和String的兩個(gè)常用構(gòu)造函數(shù)
?????? 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);
輸出結(jié)果如下:
???????? construct with a double value: 1.219999
???????? construct with a String value: 1.22
String 構(gòu)造方法是完全可預(yù)知的,通常建議優(yōu)先使用String構(gòu)造方法
BigDecimal都是不可變的(immutable)的,在進(jìn)行每一步運(yùn)算時(shí),都會(huì)產(chǎn)生一個(gè)新的對(duì)象,所以在做加減乘除運(yùn)算時(shí)千萬(wàn)要保存操作后的值。
java BigDecimal比較大小
比較大小可以用 a.compareTo(b)
返回值??? -1 小于?? 0 等于??? 1 大于
BigDecimal取其中最大、最小值、絕對(duì)值、相反數(shù):
a.max (b) //比較取最大值
a.min(b) //比較取最小值
a.abs()//取最絕對(duì)值
a.negate()//取相反數(shù)
?
?
?
?
2017-02-22
精度問(wèn)題吧,我記得可以有個(gè)叫PI的方法
2017-02-22
是精度問(wèn)題,有點(diǎn)記不清了,希望有幫助