一部の倍精度浮動小数点数を 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))));