您的位置:首页 > 编程语言 > Java开发

Java BigDemical在工作中的应用(主要用于钱的处理)

2017-04-27 13:34 441 查看
bigDecimal在java.math包下,提供用于执行任意精度小数算法的类。

BigDecimal不可变的、任意精度的有符号十进制数。

java.lang.Object

java.lang.Number

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]viewplaincopy

//金额

NumberFormatcurrency=NumberFormat.getCurrencyInstance();

//利率

NumberFormatpercent=NumberFormat.getPercentInstance();

//小数点后最多三位

percent.setMaximumFractionDigits(3);

BigDecimalloanMoney=newBigDecimal(12345.32);//贷款金额

BigDecimalrate=newBigDecimal(0.004);//利率

BigDecimalintrest=loanMoney.multiply(rate);//利息

System.out.println("贷款:"+currency.format(loanMoney));

System.out.println("利率:"+percent.format(rate));

System.out.println("利息:"+currency.format(intrest));

<spanstyle="font-size:18px;">结果:</span>

贷款:¥12,345.32
利率:0.4%
利息:¥49.38

在用户展示的时候比较方便

比较大小,例如查询用户钱包的余额和这次要支付的钱的大小。

BigDecimal是通过使用compareTo(BigDecimal)来比较的,具体比较情况如下:

[java]viewplaincopy







publicstaticvoidmain(String[]args){

BigDecimala=newBigDecimal("100");

BigDecimalb=newBigDecimal("10");

BigDecimalc=newBigDecimal("10");

intresult1=a.compareTo(b);

intresult2=a.compareTo(c);

intresult3=b.compareTo(c);

<spanstyle="font-size:18px;"></span><prename="code"class="java">intresult4=b.compareTo(a);

System.out.println(result1);System.out.println(result2);System.out.println(result3);

[java]viewplaincopy







System.out.println(result4);

}


结果:

1

1

0

-1

compareTo左边大,输出1,,右边大输出-1,相等输出0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: