BigDecimal用法总结
Posted wangchaonan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BigDecimal用法总结相关的知识,希望对你有一定的参考价值。
BigDecimal用法总结
BigDecimal常用于金额的计算,下面总结下这次项目中BigDecimal的用法。
1.加减乘除
2.设置精度
3.取反
加减乘除分别调用函数
[java] view plain copy
- public BigDecimal add(BigDecimal value);
- public BigDecimal subtract(BigDecimal value);
- public BigDecimal multiply(BigDecimal value);
- public BigDecimal divide(BigDecimal value);
举例:
[java] view plain copy
- BigDecimal a=new BigDecimal(10.0);
- BigDecimal b=new BigDecimal(9.1);
- System.out.println(a.subtract(b));
精度设置,为什么会设置精度,给大家看个效果
代码如下:
[java] view plain copy
- BigDecimal abig=new BigDecimal(10.0);
- BigDecimal bbig=new BigDecimal(9.1);
- BigDecimal cbig=new BigDecimal(8.9);
- System.out.println(abig.subtract(bbig));
- System.out.println(abig.subtract(cbig));
结果如下:
[java] view plain copy
- 0.9000000000000003552713678800500929355621337890625
- 1.0999999999999996447286321199499070644378662109375
并不是我们希望看到的0.9和1.1,原因就是转成二进制的时候会有精度问题,导致这样的结果。所以我们可以在运算的时候加精度,也可以在实例化BigDecimal的时候用字符串。
设置精度的方法:
[java] view plain copy
- System.out.println(abig.subtract(bbig).setScale(2, BigDecimal.ROUND_HALF_UP));
- System.out.println(abig.subtract(cbig).setScale(2, BigDecimal.ROUND_HALF_UP));
这样设置两位精度就可以啦
[java] view plain copy
- 0.90
- 1.10
字符串实例化的方法:
[java] view plain copy
- BigDecimal abig=new BigDecimal("10.0");
- BigDecimal bbig=new BigDecimal("9.1");
- BigDecimal cbig=new BigDecimal("8.9");
取反
因为Bigdecimal是无法直接用+-*/这些符号进行计算的,所以取反的时候也需要一个单独的方法来实现:
[java] view plain copy
- System.out.println(abig.negate());
这样就会拿到它的相反数了:
[java] view plain copy
- -10.0
这些是这次项目中用到的点
以上是关于BigDecimal用法总结的主要内容,如果未能解决你的问题,请参考以下文章