如果按原样使用DecimalFormat,则可能无法四舍五入。
展开API
DecimalFormat
https://docs.oracle.com/javase/jp/8/docs/api/java/text/DecimalFormat.html
舍入
DecimalFormat提供在RoundingMode中定义的舍入模式以进行格式化。默认情况下,使用RoundingMode.HALF_EVEN。
RoundingMode.HALF_EVEN
https://docs.oracle.com/javase/jp/8/docs/api/java/math/RoundingMode.html#HALF_EVEN
舍入模式将舍入到"最近的数字"(但是,如果两边的数字是等距的,则舍入到偶数的一面)。如果要舍弃的小数部分的左位数为奇数,则其作用类似于RoundingMode.HALF_UP,如果是偶数,则其作用类似于RoundingMode.HALF_DOWN。当在连续计算中重复应用时,此舍入模式从统计angular上使累积误差最小。这也称为"银行舍入",主要在美国使用。
因此,行为与以下舍入略有不同。
如果为0.5,则由于0在1和0之间是偶数,因此在这里看起来是四舍五入的;如果为1.5,则因为2在2和1之间是偶数,所以在这里是四舍五入的。
<表格>
tr>
header>
<身体>
tr>
tr>
tbody>
table>
如果要确保四舍五入,可以指定RoundingMode.HALF_UP。
round.java
1 2 | DecimalFormat df = new DecimalFormat(); df.setRoundingMode(RoundingMode.HALF_UP); |