一.bigdecimal 基本算法
????加球榆,減充易,乘随抠,除裁着,BigDecimal類提供了相應(yīng)的成員方法。
????1 public BigDecimal add(BigDecimal value);? ? ? ? ? ? ? ? ? ? ? ? //加法
????2 public BigDecimal subtract(BigDecimal value);? ? ? ? ? ? ? ? ? //減法
????3 public BigDecimal multiply(BigDecimal value);? ? ? ? ? ? ? ? ? //乘法
????4 public BigDecimal divide(BigDecimal value);? ? ? ? ? ? ? ? ? ? //除法
????5 toString() ? ? ? ? ? ? ? //?將BigDecimal對(duì)象的數(shù)值轉(zhuǎn)換成字符串拱她。
????6 doubleValue() ? ? ? ? ?//將BigDecimal對(duì)象中的值以雙精度數(shù)返回二驰。
????7 floatValue() ? ? ? ? ? ? //將BigDecimal對(duì)象中的值以單精度數(shù)返回。
????8 longValue() ? ? ? ? ? ? //將BigDecimal對(duì)象中的值以長(zhǎng)整數(shù)返回椭懊。
????9 intValue() ? ? ? ? ? ? ? // 將BigDecimal對(duì)象中的值以整數(shù)返回诸蚕。
二.bigdecimal 復(fù)雜算法
????1.BigDecimal類型的可以轉(zhuǎn)換到double類型:
????????用變量.doubleValue();函數(shù)? 即可將 BigDecimal 類型數(shù)據(jù) 轉(zhuǎn)化為 double類型步势!
????2.BigDecimal比較大小?:
????????可以通過(guò)BigDecimal的compareTo方法來(lái)進(jìn)行比較氧猬。
????????BigDecimal1.compareTo(BigDecimal2)
????????返回的結(jié)果是int類型,-1表示小于坏瘩,0是等于盅抚,1是大于。
????3.BigDecimal取其中最大倔矾、最小值妄均、絕對(duì)值、相反數(shù)哪自、指數(shù)冪:
????????a.max (b) //比較取最大值
????????a.min(b) //比較取最小值
????????a.abs()//取最絕對(duì)值
????????a.negate()//取相反數(shù)
????????a.pow(b) // a^b指數(shù)冪
三.bigdecimal 保留小數(shù)位丰包,精度計(jì)算
????BigDecimal.setScale()方法用于格式化小數(shù)點(diǎn)
????setScale(1)表示保留一位小數(shù),默認(rèn)用四舍五入方式
????setScale(1,BigDecimal.ROUND_DOWN)直接刪除多余的小數(shù)位壤巷,如2.35會(huì)變成2.3
????setScale(1,BigDecimal.ROUND_UP)進(jìn)位處理邑彪,2.35變成2.4
????setScale(1,BigDecimal.ROUND_HALF_UP)四舍五入,2.35變成2.4
? ? setScaler(1,BigDecimal.ROUND_HALF_DOWN)四舍五入胧华,2.35變成2.3寄症,如果是5則向下舍
注釋:
????1:scale指的是你小數(shù)點(diǎn)后的位數(shù)。
????????比如123.456則score就是3.
????????score()就是BigDecimal類中的方法啊矩动。
????????比如:BigDecimal b = new BigDecimal("123.456");
????????b.scale(),返回的就是3.
????2:roundingMode是小數(shù)的保留模式有巧。
????????它們都是BigDecimal中的常量字段,有很多種。
????????比如:BigDecimal.ROUND_HALF_UP表示的就是4舍5入悲没。
????3:pubilc BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)
????????意思是說(shuō):我用一個(gè)BigDecimal對(duì)象除以divisor后的結(jié)果篮迎,并且要求這個(gè)結(jié)果保留有scale個(gè)小數(shù)位,roundingMode表示
????????的就是保留模式是什么,是四舍五入啊還是其它的甜橱,你可以自己選享言!
????4:對(duì)于一般add、subtract渗鬼、multiply方法的小數(shù)位格式化如下:
????????BigDecimal mData = new BigDecimal("9.655").setScale(2, BigDecimal.ROUND_HALF_UP);
????????System.out.println("mData=" + mData);
????????----結(jié)果:mData=9.66
????5:銀行家算法
????????NumberFormat numberFormat = new DecimalFormat("#0.##");
????????return numberFormat.format(num.doubleValue());
參考:
????????http://www.yiibai.com/java/math/bigdecimal_bytevalueexact.html
????????http://blog.csdn.net/u010264560/article/details/52872986