java - 数字与分数相乘

标签 java math floating-point division bigdecimal

我正在使用 BigDecimals 编写一些单位转换器,并且遇到了一种情况,我必须将一个数字与一个分数 - 周期数相乘。

对于大多数情况,精度足够好,但假设我们有一个等式:

BigDecimal.valueOf(90)
          .multiply(BigDecimal.valueOf(10)
                              .divide(BigDecimal.valueOf(90), 6, RoundingMode.HALF_UP))

通常这等于 10,但是由于四舍五入,我们将得到 9.999999...

是否有一种优雅的方法来实现此目的,而无需使用 if 条件来检测何时可以切割分数?

最佳答案

以下内容将起作用:

BigDecimal.valueOf(90)
    .multiply(BigDecimal.valueOf(10))
    .divide(BigDecimal.valueOf(90), 6, RoundingMode.HALF_UP)

不同之处在于,这里的操作是链接的,这可以解决此类情况。在您的解决方案中,需要计算除法(发生错误的地方),然后计算乘法,因为它作为参数传递。

关于java - 数字与分数相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55328244/

相关文章:

java - 如何在没有互联网连接的情况下获取网络提供的日期和时间?

javascript - JavaScript 的数学算法错误?

java - float 方法的奇怪行为。重载?

ios - Objective-C 将 block 类型转换为另一个 block 类型得到了意想不到的结果

java - 如何访问多维 vector 中的元素?

java - 来自扫描仪的空白输入 - java

c# - 计算百分比值在 javascript 和 c# 之间有所不同

python - 在 Python 中索引浮点值

java - 在java应用程序中加载用户代码

java - 固定线程池和大量任务的线程问题