四舍五入至小数点后两位

时间:2019-08-11 13:51:47

标签: java math

我想四舍五入到小数点后两位。这种舍入应该发生在我们在学校中学到的最基本的水平上。

new BigDecimal(inputValue).setScale(2, What should I use here?);

我尝试了几乎所有可用的参数,但全部都可以部分使用。

不能分享示例,因为可能有太多示例,但只是希望我的值在最基本的水平上舍入到小数点后两位。

我不厌倦地搜索确切的参数来完成此任务。

注意:基本级别表示不使用ROUND_HALF_EVEN等。

2 个答案:

答案 0 :(得分:1)

您需要做的是这样

new BigDecimal(inputValue).setScale(2, RoundingMode.UP)

RoundingMode.UP只是您可以在RoundingMode类中使用的许多选项。

还有更多。例如,这里我们使用UP将所有内容四舍五入。您可以在此处查看所有值:https://docs.oracle.com/javase/7/docs/api/java/math/RoundingMode.html

编辑:我了解您想要做什么。您需要45.423 to become 45.42 while 45.55 to become 45.56。但是在Java中,任何末尾带有.5的东西都会四舍五入,或者众所周知。您不使用45.555 to 45.56就不能舍入UP,但这也意味着45.243将变成45.25。因此需要权衡。没有一种解决方案可以解决所有问题。

答案 1 :(得分:1)

您应该尝试以下操作:

new BigDecimal(inputValue).setScale(2, RoundingMode.HALF_UP)

这样,值0.005 => 0.01,值0.004 => 0.0。

此外,有关其他RoundingMode选项的行为,请参见下表:

+--------------+----+------+---------+-------+---------+-----------+-----------+---------------------------+
| Input Number | UP | DOWN | CEILING | FLOOR | HALF_UP | HALF_DOWN | HALF_EVEN | UNNECESSARY               |
+--------------+----+------+---------+-------+---------+-----------+-----------+---------------------------+
| 5.5          | 6  | 5    | 6       | 5     | 6       | 5         | 6         | throwĘArithmeticException |
+--------------+----+------+---------+-------+---------+-----------+-----------+---------------------------+
| 2.5          | 3  | 2    | 3       | 2     | 3       | 2         | 2         | throwĘArithmeticException |
+--------------+----+------+---------+-------+---------+-----------+-----------+---------------------------+
| 1.6          | 2  | 1    | 2       | 1     | 2       | 2         | 2         | throwĘArithmeticException |
+--------------+----+------+---------+-------+---------+-----------+-----------+---------------------------+
| 1.1          | 2  | 1    | 2       | 1     | 1       | 1         | 1         | throwĘArithmeticException |
+--------------+----+------+---------+-------+---------+-----------+-----------+---------------------------+
| 1            | 1  | 1    | 1       | 1     | 1       | 1         | 1         | 1                         |
+--------------+----+------+---------+-------+---------+-----------+-----------+---------------------------+
| -1           | -1 | -1   | -1      | -1    | -1      | -1        | -1        | -1                        |
+--------------+----+------+---------+-------+---------+-----------+-----------+---------------------------+
| -1.1         | -2 | -1   | -1      | -2    | -1      | -1        | -1        | throwĘArithmeticException |
+--------------+----+------+---------+-------+---------+-----------+-----------+---------------------------+
| -1.6         | -2 | -1   | -1      | -2    | -2      | -2        | -2        | throwĘArithmeticException |
+--------------+----+------+---------+-------+---------+-----------+-----------+---------------------------+
| -2.5         | -3 | -2   | -2      | -3    | -3      | -2        | -2        | throwĘArithmeticException |
+--------------+----+------+---------+-------+---------+-----------+-----------+---------------------------+
| -5.5         | -6 | -5   | -5      | -6    | -6      | -5        | -6        | throwĘArithmeticException |
+--------------+----+------+---------+-------+---------+-----------+-----------+---------------------------+

请参阅文档以获取完整说明。 来源:Java Doc