java - 使用 BigDecimal 限制有效数字的任何巧妙方法

标签 java bigdecimal

我想将 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/

相关文章:

java - Android Studio 中舍入的观察结果 - java.以及一些预期的实际解释

java - 如何从 java 中的 FileItem 获取 FileInputStream?

java - 如何从 String 中提取尾随零的数量

java - BigDecimal 的 StringBuilder 的模拟

java - BigDecimal.valueOf( double d ) 的性能

java - 扩展为 BigDecimal 的类从父类(super class)类型返回对象

java - GUI 循环问题 Java

java - Spring内部-成员实例注入(inject)澄清

java - 为什么 i++ 不是原子的?

java - 你如何从osgi中的字节反序列化一个对象