gpt4 book ai didi

java - 四舍五入到小数点后 2 位总是返回 0.0

转载 作者:行者123 更新时间:2023-12-04 14:39:39 25 4
gpt4 key购买 nike

我尝试将 double 值四舍五入到小数点后两位,但我总是得到 0.0。我尝试了三种方法。

首先:

System.out.println(Math.round(reward*100.0)/100.0);

第二个:

System.out.println(String.valueOf(round(reward, 2))); 
private double round(double value, int places)
if (places < 0) throw new IllegalArgumentException();

BigDecimal bd = new BigDecimal(value);
bd = bd.setScale(places, RoundingMode.HALF_UP);

return bd.doubleValue();
}

第三:

DecimalFormat df = new DecimalFormat("###.##");
System.out.println(df.format(reward));

每次我只得到 0.0。示例值:

  • 5.957818181818184E-16 0.0
  • 3.927272727272729E-18 0.0
  • 3.1250000000000005E-16 0.0
  • 1.6000000000000006E-19 0.0

我在这里错过了什么?

谢谢!

最佳答案

您在那里测试的四个值应该四舍五入到 0.0!

5.957818181818184E-16 等于 5.95... * 10^(-16) 等于 0.000...0595... 与第一个非零数字前面有 16 个零。与您的其他值(value)观相似。你熟悉scientific notation吗? ?

关于java - 四舍五入到小数点后 2 位总是返回 0.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23012352/

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