gpt4 book ai didi

Java - 将 double /浮点四舍五入到小数点后两位时出现意外结果

转载 作者:行者123 更新时间:2023-12-01 14:37:37 24 4
gpt4 key购买 nike

我在将 double 舍入为小数点后两位时遇到问题。我知道很多地方都问过这个问题。但我的问题略有不同,我在其他地方找不到它。

据我所知,有两种方法可以做到这一点。

  1. Math.round(double*100.0)/100.0
  2. DecimalFormat(“###.##”)

我正在尝试使用第一种方法:自定义 double 舍入方法。当第二个小数为0时,结果将只打印第一个小数,忽略第二个小数。

例如,

  1. Math.round(1.23333*100.0)/100.0 结果是 1.23。这个效果很好。
  2. Math.round(3.90*100.0)/100.0。结果为 3.9。出现问题。我想显示 3.90 而不是 3.9
  3. Math.round(3*100.0)/100.0。结果是4.0。我想要 4.00 而不是 4.0

所以,我的问题是,无论最后一个小数点是否为 0,我如何才能获得具有 2 位小数的 double 值。 我知道我可以使用第二种方式 - DecimalFormat(“###.##”) 来实现我想要的!但是用第一种方法可以吗?

编辑:感谢您的回答。看起来不可能使用 round() 方法来实现它。然而,有些人建议结合使用两种方式来实现。但我认为仅使用 DecimalFormat(“###.##”) 就可以得到我想要的。谁能确认一下吗?

最佳答案

我建议使用 String.format("%1$.2f",x)。它将值四舍五入到指定的精度(在我们的示例中为 2 位),并将尾随零保留在右侧。

System.out.println(String.format("%1$.2f",3.121)) gives 3.12
System.out.println(String.format("%1$.2f",3.129)) gives 3.13
System.out.println(String.format("%1$.2f",3.12)) gives 3.12
System.out.println(String.format("%1$.2f",3.10)) gives 3.10

关于Java - 将 double /浮点四舍五入到小数点后两位时出现意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16332953/

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