我需要将一些双精度数舍入到小数点后 3 到 4 位。我尝试了 3 种不同的方法,它们都不起作用。
对于我拥有的大多数双打,它都有效,但无论如何我仍然拥有这样的双打:
- 0.12919999999999998
- 0.12365000000000001
- 36371.922099999996
到目前为止,我尝试了以下方法:
-- 1
(double) Math.round(someDouble * 10000) / 10000
-- 2
DecimalFormat twoDForm = new DecimalFormat("0.0000");
twoDForm.format(someDouble);
-- 3
BigDecimal bd = new BigDecimal(someDouble);
bd = bd.setScale(4, BigDecimal.ROUND_HALF_UP);
有没有人有我正在寻找的神奇解决方案:)?
谢谢 !
注意:这是完整的代码:
// Processing
long start = System.nanoTime();
for (int i = 0; i < loopSize; i++) {
process();
}
// end timer
long absTime = System.nanoTime() - start;
double absTimeMilli = absTime * 1e-6;
DecimalFormat t = new DecimalFormat("###.####");
context.setTotalTime(Double.valueOf(t.format(absTimeMilli)));
context.setUnit(TimeUnit.SECONDS);
context.setMeanTime(Double.valueOf(t.format(absTimeMilli / Const.BENCH_LOOP_COUNT)));
context.setExecPerTimeUnit(Double.valueOf(t.format(loopSize / (absTimeMilli*1e-3))));