关闭

BigDecimal用法总结

2193人阅读 评论(3) 收藏 举报
分类:

BigDecimal常用于金额的计算,下面总结下这次项目中BigDecimal的用法。

1.加减乘除

2.设置精度

3.取反

加减乘除分别调用函数

        public BigDecimal add(BigDecimal value);
        public BigDecimal subtract(BigDecimal value);
        public BigDecimal multiply(BigDecimal value);
        public BigDecimal divide(BigDecimal value);

举例:

        BigDecimal a=new BigDecimal(10.0);
        BigDecimal b=new BigDecimal(9.1);
        System.out.println(a.subtract(b));

精度设置,为什么会设置精度,给大家看个效果

代码如下:

        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));

结果如下:

0.9000000000000003552713678800500929355621337890625
1.0999999999999996447286321199499070644378662109375
并不是我们希望看到的0.9和1.1,原因就是转成二进制的时候会有精度问题,导致这样的结果。所以我们可以在运算的时候加精度,也可以在实例化BigDecimal的时候用字符串。

设置精度的方法:

        System.out.println(abig.subtract(bbig).setScale(2, BigDecimal.ROUND_HALF_UP));
        System.out.println(abig.subtract(cbig).setScale(2, BigDecimal.ROUND_HALF_UP));
这样设置两位精度就可以啦

0.90
1.10
字符串实例化的方法:

        BigDecimal abig=new BigDecimal("10.0");
        BigDecimal bbig=new BigDecimal("9.1");
        BigDecimal cbig=new BigDecimal("8.9");


取反

因为Bigdecimal是无法直接用+-*/这些符号进行计算的,所以取反的时候也需要一个单独的方法来实现:

        System.out.println(abig.negate());
这样就会拿到它的相反数了:

-10.0
这些是这次项目中用到的点





0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:140361次
    • 积分:4619
    • 等级:
    • 排名:第6573名
    • 原创:101篇
    • 转载:4篇
    • 译文:0篇
    • 评论:1766条
    最新评论