为了账号安全,请及时绑定邮箱和手机立即绑定

Java BigDecimal.ROUND_HALF偶数,带有3个小数(奇数和偶数)

Java BigDecimal.ROUND_HALF偶数,带有3个小数(奇数和偶数)

翻翻过去那场雪 2021-04-28 13:37:21
晚上好:我在用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


查看完整回答
反对 回复 2021-05-19
?
隔江千里

TA贡献1906条经验 获得超10个赞

在JDK 1.8中,您可以使用java.text.DecimalFormat此功能

new DecimalFormat("0.00").format(1544.565)

输出

1544.57

阅读文档以识别更多模式字符。


更新2(回答此评论):

您正在使用BigDecimal.ROUND_HALF_EVENuseBigDecimal.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


查看完整回答
反对 回复 2021-05-19
?
子衿沉夜

TA贡献1828条经验 获得超3个赞

在这里确认;


double a = 1544.565;

double rounded = Math.round(a * 100.0) / 100.0;

System.out.println(rounded);

输出1544.57。


查看完整回答
反对 回复 2021-05-19
  • 3 回答
  • 0 关注
  • 438 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号