bigdecimal除法不四舍五入_BigDecimal除法问题

bigdecimal除法不四舍五入_BigDecimal除法问题BigDecimal 类的主要功能是进行小数的大数计算 而且最重要的是可以精确到指定的四舍五入位数 如果要进行四舍五入的操作 则必须依靠以下的方法 publicBigDec BigDecimaldi intscale introundingM scale 表示四舍五入的位数在上面的例子中 我们使用了 BigDecimal 类 并且采用 setScale 方法设置

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进)。

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

bigdecimal除法不四舍五入_BigDecimal除法问题

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

bigdecimal除法不四舍五入_BigDecimal除法问题

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

HALF_EVEN :银行家算法。

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/211360.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午10:37
下一篇 2026年3月18日 下午10:37


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号