1、对于不需要任何准确计算精度的数字可以直接使用float或double,但是如果需要精确计算的结果,则必须使用BigDecimal类
3、基本方 法描 述
| add(BigDecimal)BigDecimal对象中的值相加,然后返回这个对象。 |
| subtract(BigDecimal)BigDecimal对象中的值相减,然后返回这个对象。 |
| multiply(BigDecimal)BigDecimal对象中的值相乘,然后返回这个对象。 |
| divide(BigDecimal)BigDecimal对象中的值相除,然后返回这个对象。 |
| toString()将BigDecimal对象的数值转换成字符串。 |
| doubleValue()将BigDecimal对象中的值以双精度数返回。 |
| floatValue()将BigDecimal对象中的值以单精度数返回。 |
| longValue()将BigDecimal对象中的值以长整数返回。 |
| intValue()将BigDecimal对象中的值以整数返回。 |
| money.divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_DOWN);除100,保留2位小数,四舍五入 |
4、BigDecimal.setScale()方法用于格式化小数点
| setScale(1)表示保留一位小数,默认用四舍五入方式 |
| setScale(1,BigDecimal.ROUND_DOWN)直接删除多余的小数位,如2.35会变成2.3 |
| setScale(1,BigDecimal.ROUND_UP)进位处理,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则向下舍 |
| |
| |
| 注释: |
| |
| scale指的是你小数点后的位数。比如123.456则score就是3. |
| score()就是BigDecimal类中的方法啊。 |
| 比如:BigDecimal b = new BigDecimal("123.456"); |
| b.scale(),返回的就是3. |
| # |
| roundingMode是小数的保留模式。它们都是BigDecimal中的常量字段,有很多种。 |
| 比如:BigDecimal.ROUND_HALF_UP表示的就是4舍5入。 |
| # |
| pubilc BigDecimal divide(BigDecimal divisor, int scale, int roundingMode) |
的意思是说:我用一个BigDecimal对象除以divisor后的结果,并且要求这个结果保留有scale个小数位, roundingMode表示的就是保留模式是什么,是四舍五入啊还是其它的,你可以自己选! |
| 4:对于一般add、subtract、multiply方法的小数位格式化如下: |
| BigDecimal mData = new BigDecimal("9.655").setScale(2, BigDecimal.ROUND_HALF_UP); |
| System.out.println("mData=" + mData); |
| |
| ----结果:----- mData=9.66 |
5、与0比较
| 标准做法 |
| int r=big_decimal.compareTo(BigDecimal.Zero); //和0,Zero比较 |
| if(r==0) //等于 |
| if(r==1) //大于 |
| if(r==-1) //小于 |
| 或者 |
| if(big_decimal.equals(BigDecimal.Zero)) //是否等于0 |