gpt4 book ai didi

Java NumberFormat四舍五入模式,为什么半上格式1.015转1.01不转1.02

转载 作者:行者123 更新时间:2023-11-30 07:39:58 29 4
gpt4 key购买 nike

Java代码

@Test
void a() {
NumberFormat format = DecimalFormat.getInstance(Locale.CHINA);
format.setMaximumFractionDigits(2);
format.setMinimumFractionDigits(2);
format.setCurrency(Currency.getInstance(Locale.CHINA));
for (RoundingMode mode : RoundingMode.values()) {
if(mode == RoundingMode.UNNECESSARY) continue;
format.setRoundingMode(mode);
System.out.println("Rounding mode: " + mode);
System.out.println("--------------------------------------------------------");
System.out.println("\t format 1.014 is " + format.format(1.014));
System.out.println("\t format 1.015 is " + format.format(1.015));
System.out.println("\t format 1.016 is " + format.format(1.016));
System.out.println();
}
}

结果:

舍入模式:UP

 format 1.014 is 1.02
format 1.015 is 1.02
format 1.016 is 1.02

舍入模式:DOWN

 format 1.014 is 1.01
format 1.015 is 1.01
format 1.016 is 1.01

舍入模式:CEILING

 format 1.014 is 1.02
format 1.015 is 1.02
format 1.016 is 1.02

舍入模式:FLOOR

 format 1.014 is 1.01
format 1.015 is 1.01
format 1.016 is 1.01

舍入模式:HALF_UP

 format 1.014 is 1.01
format 1.015 is 1.01
format 1.016 is 1.02

舍入模式:HALF_DOWN

 format 1.014 is 1.01
format 1.015 is 1.01
format 1.016 is 1.02

舍入模式:HALF_EVEN

 format 1.014 is 1.01
format 1.015 is 1.01
format 1.016 is 1.02

进程结束,退出代码为 0

那么,有没有一种简单的方法可以让1.015格式化为1.02?(JDK 12,JDK 8)

最佳答案

那是因为 1.015 实际上是1.0149999999999999023003738329862244427204132080078125

使用 BigDecimal 的解决方案适用于字符串

BigDecimal db = new BigDecimal("1.015");
db = db.setScale(2, BigDecimal.ROUND_HALF_UP);`

关于Java NumberFormat四舍五入模式,为什么半上格式1.015转1.01不转1.02,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58635970/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com