我想将 Java BigDecimal
舍入到一定数量的有效数字(不是小数位),例如到 4 位数:
12.3456 => 12.35 123.456 => 123.5 123456 => 123500
等基本问题是如何找到 BigDecimal
的数量级,这样我就可以决定在小数点后使用多少位。
我能想到的就是一些可怕的循环,除以 10 直到结果为 <1,我希望有更好的方法。
顺便说一句,这个数字可能非常大(或非常小),所以我无法将其转换为 double 以在其上使用 Log。
最佳答案
为什么不直接使用 round(MathContext)
?
BigDecimal value = BigDecimal.valueOf(123456);
BigDecimal wantedValue = value.round(new MathContext(4, RoundingMode.HALF_UP));
关于java - 使用 BigDecimal 限制有效数字的任何巧妙方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7572309/