bigDecimal在java.math包下,提供用于执行任意精度小数算法的类。
BigDecimal 不可变的、任意精度的有符号十进制数。
java.math.BigDecimal
BigDecimal类使用户完全控制舍入行为。如果未指定舍入模式,并且无法表示准确结果,则抛出一个异常;否则,通过向该操作提供适当的MathContext对象,可以对已选择的精度和舍入模式执行计算。在商业计算中要用BigDecimal。BigDecimal所创建的是对象,我们不能使用传统的+、-、*、/等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法。方法中的参数也必须是BigDecimal的对象。构造器是类的特殊方法,专门用来创建对象,特别是带有参数的对象。
常用构造方法:可以将String类型的数字,int,double,long作为构造方法的参数传入进行构造一个BigDecimal对象。
常用方法:
加减乘除
add(BigDecimal) BigDecimal对象中的值相加,然后返回这个对象。
subtract(BigDecimal) BigDecimal对象中的值相减,然后返回这个对象。 multiply(BigDecimal) BigDecimal对象中的值相乘,然后返回这个对象。 divide(BigDecimal) BigDecimal对象中的值相除,然后返回这个对象。toString() 将BigDecimal对象的数值转换成字符串。
doubleValue() 将BigDecimal对象中的值以双精度数返回。 floatValue() 将BigDecimal对象中的值以单精度数返回。 longValue() 将BigDecimal对象中的值以长整数返回。 intValue() 将BigDecimal对象中的值以整数返回。将计算结果进行格式化:
[java]
- //金额
- NumberFormat currency =NumberFormat.getCurrencyInstance();
- //利率
- NumberFormat percent = NumberFormat.getPercentInstance();
- //小数点后最多三位
- percent.setMaximumFractionDigits(3);
- BigDecimal loanMoney = new BigDecimal(12345.32); //贷款金额
- BigDecimal rate = new BigDecimal(0.004); //利率
- BigDecimal intrest = loanMoney.multiply(rate); //利息
- System.out.println("贷款:"+currency.format(loanMoney));
- System.out.println("利率:"+percent.format(rate));
- System.out.println("利息:"+currency.format(intrest));
- <span style="font-size:18px;">结果:</span>
贷款:¥12,345.32
利率:0.4% 利息:¥49.38 在用户展示的时候比较方便比较大小,例如查询用户钱包的余额和这次要支付的钱的大小。
BigDecimal是通过使用compareTo(BigDecimal)来比较的,具体比较情况如下:
[java]
- public static void main(String[] args) {
- BigDecimal a = new BigDecimal("100");
- BigDecimal b = new BigDecimal("10");
- BigDecimal c = new BigDecimal("10");
- int result1 = a.compareTo(b);
- int result2 = a.compareTo(c);
- int result3 = b.compareTo(c);
- <span style="font-size:18px;"></span><pre name="code" class="java"> int result4 = b.compareTo(a);
[java]
- System.out.println(result4);
结果:
1
1
0
-1
compareTo左边大,输出1,,右边大输出-1,相等输出0