public BigDecimal divide(BigDecimal divisor,
int scale,
RoundingMode roundingMode)返回一个 BigDecimal,其值为 (this / divisor),其标度为指定标度。假如必须执行舍入,以生成具有指定标度的结果,则应用指定的舍入模式。
参数:
divisor – 此 BigDecimal 要除以的值。
scale – 要返回的 BigDecimal 商的标度。
roundingMode – 要应用的舍入模式。
本人的问题是roundingMode 的问题
API文档中的舍入模式
枚举常量摘要
CEILING
向正无限大方向舍入的舍入模式。
DOWN
向零方向舍入的舍入模式。
FLOOR
向负无限大方向舍入的舍入模式。
HALF_DOWN
向最接近数字方向舍入的舍入模式,假如与两个相邻数字的距离相等,则向下舍入。
HALF_EVEN
向最接近数字方向舍入的舍入模式,假如与两个相邻数字的距离相等,则向相邻的偶数舍入。
HALF_UP
向最接近数字方向舍入的舍入模式,假如与两个相邻数字的距离相等,则向上舍入。
UNNECESSARY
用于断言请求的操作具有精确结果的舍入模式,因此不需要舍入。
UP
远离零方向舍入的舍入模式。
那么问题来了
例如:
b.divide(one, 10, 4)
但是当roundingMode =4 时,这个代表什么舍入模式啊,虽然做demo验证过是四舍五入,但是有没有对这个字段比较官方的解释呢
int scale,
RoundingMode roundingMode)返回一个 BigDecimal,其值为 (this / divisor),其标度为指定标度。假如必须执行舍入,以生成具有指定标度的结果,则应用指定的舍入模式。
参数:
divisor – 此 BigDecimal 要除以的值。
scale – 要返回的 BigDecimal 商的标度。
roundingMode – 要应用的舍入模式。
本人的问题是roundingMode 的问题
API文档中的舍入模式
枚举常量摘要
CEILING
向正无限大方向舍入的舍入模式。
DOWN
向零方向舍入的舍入模式。
FLOOR
向负无限大方向舍入的舍入模式。
HALF_DOWN
向最接近数字方向舍入的舍入模式,假如与两个相邻数字的距离相等,则向下舍入。
HALF_EVEN
向最接近数字方向舍入的舍入模式,假如与两个相邻数字的距离相等,则向相邻的偶数舍入。
HALF_UP
向最接近数字方向舍入的舍入模式,假如与两个相邻数字的距离相等,则向上舍入。
UNNECESSARY
用于断言请求的操作具有精确结果的舍入模式,因此不需要舍入。
UP
远离零方向舍入的舍入模式。
那么问题来了
例如:
b.divide(one, 10, 4)
但是当roundingMode =4 时,这个代表什么舍入模式啊,虽然做demo验证过是四舍五入,但是有没有对这个字段比较官方的解释呢
解决方案
40
=4是HALF_UP模式,>=0.5就进位。