我想四舍五入到小数点后两位。这种舍入应该发生在我们在学校中学到的最基本的水平上。
new BigDecimal(inputValue).setScale(2, What should I use here?);
我尝试了几乎所有可用的参数,但全部都可以部分使用。
不能分享示例,因为可能有太多示例,但只是希望我的值在最基本的水平上舍入到小数点后两位。
我不厌倦地搜索确切的参数来完成此任务。
注意:基本级别表示不使用ROUND_HALF_EVEN
等。
答案 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