• BigDecimal除法问题


    BigDecimal类的主要功能是进行小数的大数计算,而且最重要的是可以精确到指定的四舍五入位数。

    如果要进行四舍五入的操作,则必须依靠以下的方法:
    public BigDecimal divide(BigDecimal divisor,int scale,int roundingMode)
    scale:表示四舍五入的位数

    在上面的例子中,我们使用了BigDecimal类,并且采用setScale方法设置了精度,同时传递了一个RoundingMode.HALF_EVEN参数表示使用银行家舍入法则进行近似计算,BigDecimal和RoundingMode是一个绝配,想要采用什么舍入模式使用RoundingMode设置即可。目前Java支持以下七种舍入方式:

    ROUND_UP: 远离零方向舍入。

    向远离0的方向舍入,也就是说,向绝对值最大的方向舍入,只要舍弃位非0即进位。

    ROUND_DOWN:趋向零方向舍入。

    向0方向靠拢,也就是说,向绝对值最小的方向输入,注意:所有的位都舍弃,不存在进位情况。

    ROUND_CEILING:向正无穷方向舍入。

    向正最大方向靠拢,如果是正数,舍入行为类似于ROUND_UP;如果为负数,则舍入行为类似于ROUND_DOWN。注意:Math.round方法使用的即为此模式。

    ROUND_FLOOR:向负无穷方向舍入。

    向负无穷方向靠拢,如果是正数,则舍入行为类似于 ROUND_DOWN;如果是负数,则舍入行为类似于 ROUND_UP。

    HALF_UP: 最近数字舍入(5进)。

    这就是我们最最经典的四舍五入模式。

    HALF_DOWN:最近数字舍入(5舍)。

    在四舍五入中,5是进位的,而在HALF_DOWN中却是舍弃不进位。

    HALF_EVEN :银行家算法。

    在普通的项目中舍入模式不会有太多影响,可以直接使用Math.round方法,但在大量与货币数字交互的项目中,一定要选择好近似的计算模式,尽量减少因算法不同而造成的损失。(银行家算法就是,假如保留两位,第三位大于5,则进1;小于5,舍去;第三位为奇数,进1,偶数,舍去。)

    想要飞得更高,就该忘记地平线!
  • 相关阅读:
    洛谷P3455
    开发人员的奋斗目标
    js判读周末以及节假日
    c#中集成Swagger
    Combo Select – jQuery可搜索下拉框插件
    接口对接 调用与处理方式
    问题集锦
    sql server 自定义函数的使用
    Api接口服务的设计和安全解决方案
    使用Jquery Ajax请求 下载压缩文件
  • 原文地址:https://www.cnblogs.com/shenwen/p/9481856.html
Copyright © 2020-2023  润新知