晚上好:我在用3个或更多小数点舍入数字时遇到问题。例如,我有这个数字:1544.565我正在尝试将其舍入到1544.57我试过了:BigDecimal.ROUND_HALF_EVENBigDecimal.ROUND_UPRoundingMode.HALF_EVENRoundingMode.HALF_UPRoundingMode.CEILINGRoundingMode.UP他们都给了我相同的错误结果:1544.56我正试图获得1544.57有什么解决办法吗?
3 回答

斯蒂芬大帝
TA贡献1827条经验 获得超8个赞
尝试ROUND_UP
比例尺2:
BigDecimal bigDecimal = new BigDecimal("1544.565"); System.out.println(bigDecimal.setScale(2, BigDecimal.ROUND_UP)); // 1544.57

隔江千里
TA贡献1906条经验 获得超10个赞
在JDK 1.8中,您可以使用java.text.DecimalFormat
此功能
new DecimalFormat("0.00").format(1544.565)
输出
1544.57
阅读文档以识别更多模式字符。
更新2(回答此评论):
您正在使用BigDecimal.ROUND_HALF_EVEN
useBigDecimal.ROUND_HALF_UP
来代替。
不要使用BigDecimal.ROUND_UP
,它总是将数字四舍五入。
BigDecimal.ROUND_HALF_UP
舍入模式向“最近的邻居”舍入,除非两个邻居都等距,在这种情况下将舍入。
〜Java文档〜
例子:
BigDecimal number = new BigDecimal("1544.565"); System.out.println(number.setScale(2, BigDecimal.ROUND_HALF_UP).toString());
输出
1544.57

子衿沉夜
TA贡献1828条经验 获得超3个赞
在这里确认;
double a = 1544.565;
double rounded = Math.round(a * 100.0) / 100.0;
System.out.println(rounded);
输出1544.57。
添加回答
举报
0/150
提交
取消