math.rint采用“四舍六入五成双”规则:小数部分0.5向上取整,=0.5时向偶数方向取整;返回double类型,区别于math.round的四舍五入和long/int返回类型。

Math.rint 在 Java 中用于返回最接近参数的 double 类型整数值,遵循“四舍六入五成双”(银行家舍入法)规则,不是简单四舍五入。
什么是“四舍六入五成双”?
这是 IEEE 754 标准规定的舍入方式,目的是减少统计偏差:
- 小数部分 → 向下取整(如
Math.rint(2.3)→2.0) - 小数部分 > 0.5 → 向上取整(如
Math.rint(2.7)→3.0) - 小数部分 == 0.5 → 向**偶数方向**取整(如
Math.rint(2.5)→2.0,Math.rint(3.5)→4.0)
和 Math.round 的区别在哪?
Math.round 是“四舍五入”,且返回 long 或 int;而 Math.rint 返回 double,并遵守银行家舍入:
-
Math.round(2.5)→3L(直接进一) -
Math.rint(2.5)→2.0(靠近偶数 2) -
Math.rint(-2.5)→-2.0(-2 比 -3 更接近且是偶数)
怎么得到真正的 int/long 整数?
Math.rint 返回的是 double,如需整数类型,需显式转换:
-
(int) Math.rint(4.5)→4 -
(long) Math.rint(-1.5)→-2L - 注意:对超出
int范围的值(如Math.rint(3e10)),用(int)会溢出,应优先用long转换
常见易错点提醒
别误以为它等价于四舍五入,尤其处理金融或统计场景时:
-
Math.rint(0.5)是0.0,不是1.0 -
Math.rint(-0.5)是-0.0(注意负零,但数值上等于 0.0) - 对整数输入(如
Math.rint(7.0))直接返回原值7.0
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











