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

晚上好:

我在用3个或更多小数点舍入数字时遇到问题。

例如,我有这个数字:1544.565

我正在尝试将其舍入到1544.57


我试过了:

  • BigDecimal.ROUND_HALF_EVEN

  • BigDecimal.ROUND_UP

  • RoundingMode.HALF_EVEN

  • RoundingMode.HALF_UP

  • RoundingMode.CEILING

  • RoundingMode.UP

他们都给了我相同的错误结果:1544.56我正试图获得1544.57

有什么解决办法吗?


翻翻过去那场雪
浏览 439回答 3
3回答

斯蒂芬大帝

尝试ROUND_UP比例尺2:BigDecimal bigDecimal = new BigDecimal("1544.565"); System.out.println(bigDecimal.setScale(2, BigDecimal.ROUND_UP)); // 1544.57

隔江千里

在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

子衿沉夜

在这里确认;double a = 1544.565;double rounded = Math.round(a * 100.0) / 100.0;System.out.println(rounded);输出1544.57。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java