根据维基百科在舍入负数时,您可以舍入绝对数.因此,通过这种推理,-3.5将四舍五入为-4.但是当我使用java.lang.Math.round(-3.5)返回-3时.有人可以解释一下吗?
根据javadoc
返回与参数最接近的long.结果通过添加1/2舍入为整数,取结果的最低值,并将结果转换为long类型.换句话说,结果等于表达式的值:
(long)Math.floor(a + 0.5d)
从概念上讲,你舍了.换句话说,对于大于该值的下一个整数,-3大于-3.5,而-4小于-3.
有多种舍入方法; 你正在看的那个称为对称算术舍入(正如它所述).您所指的部分指出:"这种方法通常用于数学应用,例如会计.它通常在小学数学课程中教授." 这似乎承认,这不是全球商定的规则,而是最常见的规则.
就个人而言,我不记得在学校里曾经被教过这种规则.我对舍入的理解一直是.5被舍入,无论数字的符号如何.显然,Java的作者有相同的理解.这是非对称算术舍入.
不同的工具和语言可能使用不同的舍入方案.Excel显然使用对称方法.
(总的来说,我建议如果你发现维基百科与经验之间存在冲突,你可以在别处寻找信息.维基百科并不完美.)
对于它的价值,java.math.BigDecimal
如果你需要更多控制那种东西,可以选择舍入模式.