美文网首页
Java BigDecimal 高精度运算

Java BigDecimal 高精度运算

作者: MrLimLee | 来源:发表于2020-07-24 16:20 被阅读0次

    不同舍入模式下的舍入操作汇总

    数字 UP DOWN CEILING FLOOR HALF_UP HALF_DOWN HALF_EVEN
    5.5 6 5 6 5 6 5 6
    2.5 3 2 3 2 3 2 2
    1.6 2 1 2 1 2 2 2
    1.1 2 1 2 1 1 1 1
    1.0 1 1 1 1 1 1 1
    -1.0 -1 -1 -1 -1 -1 -1 -1
    -1.1 -2 -1 -1 -2 -1 -1 -1
    -1.6 -2 -1 -1 -2 -2 -2 -2
    -2.5 -3 -2 -2 -3 -3 -2 -2
    -5.5 -6 -5 -5 -6 -6 -5 -6

    UP 远离零方向舍入的舍入模式。始终对非零舍弃部分前面的数字加 1。注意,此舍入模式始终不会减少计算值的绝对值

    DOWN 向零方向舍入的舍入模式。从不对舍弃部分前面的数字加 1(即截尾)。注意,此舍入模式始终不会增加计算值的绝对值

    CEILING 向正无限大方向舍入的舍入模式。如果结果为正,则舍入行为类似于 RoundingMode.UP;如果结果为负,则舍入行为类似于 RoundingMode.DOWN。注意,此舍入模式始终不会减少计算值

    FLOOR 向负无限大方向舍入的舍入模式。如果结果为正,则舍入行为类似于 RoundingMode.DOWN;如果结果为负,则舍入行为类似于 RoundingMode.UP。注意,此舍入模式始终不会增加计算值

    HALF_UP 向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向上舍入。如果被舍弃部分 >= 0.5,则舍入行为同 RoundingMode.UP;否则舍入行为同 RoundingMode.DOWN。注意,此舍入模式就是通常学校里讲的四舍五入

    HALF_DOWN 向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向下舍入。如果被舍弃部分 > 0.5,则舍入行为同 RoundingMode.UP;否则舍入行为同 RoundingMode.DOWN

    HALF_EVEN 向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。如果舍弃部分左边的数字为奇数,则舍入行为同 RoundingMode.HALF_UP;如果为偶数,则舍入行为同 RoundingMode.HALF_DOWN。注意,在重复进行一系列计算时,此舍入模式可以在统计上将累加错误减到最小。此舍入模式也称为“银行家舍入法”,主要在美国使用。此舍入模式类似于 Java 中对 float 和 double 算法使用的舍入策略

    UNNECESSARY 用于断言请求的操作具有精确结果的舍入模式,因此不需要舍入。如果对生成精确结果的操作指定此舍入模式,则抛出 ArithmeticException

    相关文章

      网友评论

          本文标题:Java BigDecimal 高精度运算

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