舍入到固定的相对精度

时间:2014-11-14 18:51:28

标签: java floating-point rounding

我得到代表字符串的数字,如

248.03500000066338
313.44999999979470
4.2346999999

我需要把它们变成像

这样的东西
248.035
313.45
4.2347

同时保持固定的相对精度,让我们说6个有效数字。我可以使用Math.log10来计算,计算所需的绝对精度,并相应地舍入,但我想知道是否有一种简单的方法。


理想情况下,结果数字应该是这样的,以便在转换为字符串时不会产生尾随的九,但这不是必需的,也许是不可能的。

1 个答案:

答案 0 :(得分:1)

它可能不是最高效的解决方案,但我认为这是最简单的解决方案:

BigDecimal input = new BigDecimal("248.03500000066338");
double rounded = input.round(new MathContext(6)).doubleValue();