我嘗試將double值舍入到2位小數,但我總是得到0.0。我嘗試了三種方法。舍入雙精度到2位小數返回總是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
缺少什麼我在這裏?
謝謝!
你爲什麼要圓呢?你想打印結果還是在進一步的計算中使用它? –
而且:'6 * 10^-16'是'0.0000000000000006',取整時應該是'0.0'。 –
該值不一定是確切的。我需要它進行進一步的計算,在這裏印刷我只是想展示我如何測試這些值。 – mapf