美文网首页
BigDecimal 使用笔记

BigDecimal 使用笔记

作者: sugarsun | 来源:发表于2017-11-23 15:50 被阅读0次

    一.bigdecimal 基本算法

        加,减,乘,除,BigDecimal类提供了相应的成员方法。

        1 public BigDecimal add(BigDecimal value);                        //加法

        2 public BigDecimal subtract(BigDecimal value);                  //减法

        3 public BigDecimal multiply(BigDecimal value);                  //乘法

        4 public BigDecimal divide(BigDecimal value);                    //除法

        5 toString()               // 将BigDecimal对象的数值转换成字符串。

        6 doubleValue()          //将BigDecimal对象中的值以双精度数返回。

        7 floatValue()             //将BigDecimal对象中的值以单精度数返回。

        8 longValue()             //将BigDecimal对象中的值以长整数返回。

        9 intValue()               // 将BigDecimal对象中的值以整数返回。

    二.bigdecimal 复杂算法

        1.BigDecimal类型的可以转换到double类型:

            用变量.doubleValue();函数  即可将 BigDecimal 类型数据 转化为 double类型!

        2.BigDecimal比较大小 :

            可以通过BigDecimal的compareTo方法来进行比较。

            BigDecimal1.compareTo(BigDecimal2)

            返回的结果是int类型,-1表示小于,0是等于,1是大于。

        3.BigDecimal取其中最大、最小值、绝对值、相反数、指数幂:

            a.max (b) //比较取最大值

            a.min(b) //比较取最小值

            a.abs()//取最绝对值

            a.negate()//取相反数

            a.pow(b) // a^b指数幂

    三.bigdecimal 保留小数位,精度计算

        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则向下舍

    注释:

        1:scale指的是你小数点后的位数。

            比如123.456则score就是3.

            score()就是BigDecimal类中的方法啊。

            比如:BigDecimal b = new BigDecimal("123.456");

            b.scale(),返回的就是3.

        2:roundingMode是小数的保留模式。

            它们都是BigDecimal中的常量字段,有很多种。

            比如:BigDecimal.ROUND_HALF_UP表示的就是4舍5入。

        3: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:银行家算法

            NumberFormat numberFormat = new DecimalFormat("#0.##");

            return numberFormat.format(num.doubleValue());

    参考:

            http://www.yiibai.com/java/math/bigdecimal_bytevalueexact.html

            http://blog.csdn.net/u010264560/article/details/52872986

            http://zhangyinhu8680.iteye.com/blog/1536397

    相关文章

      网友评论

          本文标题:BigDecimal 使用笔记

          本文链接:https://www.haomeiwen.com/subject/hhikyttx.html