我得到代表字符串的数字,如
248.03500000066338
313.44999999979470
4.2346999999
我需要把它们变成像
这样的东西248.035
313.45
4.2347
同时保持固定的相对精度,让我们说6个有效数字。我可以使用Math.log10
来计算,计算所需的绝对精度,并相应地舍入,但我想知道是否有一种简单的方法。
理想情况下,结果数字应该是这样的,以便在转换为字符串时不会产生尾随的九,但这不是必需的,也许是不可能的。
答案 0 :(得分:1)
它可能不是最高效的解决方案,但我认为这是最简单的解决方案:
BigDecimal input = new BigDecimal("248.03500000066338");
double rounded = input.round(new MathContext(6)).doubleValue();