java - 意外的 BigDecimal 结果。 1 除以 3 结果为 1。不确定为什么

标签 java bigdecimal rounding

Possible Duplicate:
Addition for BigDecimal

我觉得我错过了一些明显的东西,但无法弄清楚它是什么。我正在尝试使用 BigDecimal获取两个数字相除的小数部分。一个非常简单的情况,1.00 除以 3.00 应该是 0.(3) 重复。然而,我一直得到 1.00 的结果。

BigDecimal num = new BigDecimal(1.00).setScale(2);
BigDecimal divisor = new BigDecimal(3.00).setScale(2);

num.divide(divisor, BigDecimal.ROUND_HALF_UP);

System.out.print(num);

我的结果是 1.00,但我不明白为什么?

最佳答案

num.divide 的结果被忽略。您需要将其设置回变量

    BigDecimal num = new BigDecimal(1.00).setScale(2);
    BigDecimal divisor = new BigDecimal(3.00).setScale(2);

    BigDecimal result = num.divide(divisor, BigDecimal.ROUND_HALF_UP);

    System.out.print(result);

这会打印0.33

关于java - 意外的 BigDecimal 结果。 1 除以 3 结果为 1。不确定为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14202246/

相关文章:

c# - LINQ to SQL Math.Round 问题

java - 使用 BigDecimal 舍入?

java - 如何在正则表达式中匹配 "any character"?

java - 文件在 Java 中无法正常工作

java - 使用 Java/Scala 创建文档的格式化 PNG 'pages'

java - Java中如何获取BigInteger的精度

java - Spring Security - 不是通过 IP 而是通过域/子域进行身份验证?

Java:如何使用函数式编程正确操作 BigDecimal 数组?

java - BigDecimal 到 SQL NUMBER : check for value larger than precision

使用 R 中的种子随机向上或向下舍入 0.5