详解Math.round函数

本文详细解析了Java中Math.round()函数的工作原理,通过实例演示了该函数如何处理正数和负数的小数部分,揭示了它并非简单的四舍五入,而是先加0.5再向下取整的独特机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.代码如下, 

public class TestMathRound {
    public static void main(String[] args) {
        System.out.println("小数点后第一位=5");
        System.out.println("正数:Math.round(11.5)=" + Math.round(11.5));//12
        System.out.println("负数:Math.round(-11.5)=" + Math.round(-11.5));//-11
        System.out.println();
        System.out.println("小数点后第一位<5");
        System.out.println("正数:Math.round(11.46)=" + Math.round(11.46));//11
        System.out.println("负数:Math.round(-11.46)=" + Math.round(-11.46));//-11
        System.out.println();
        System.out.println("小数点后第一位>5");
        System.out.println("正数:Math.round(11.68)=" + Math.round(11.68));//12
        System.out.println("负数:Math.round(-11.68)=" + Math.round(-11.68));//-12
    }
}

2.结果如下,可以自己运行。

3.本来以为是四舍五入,取最靠近的整数,查了网上说有四舍六入五成双,最后还不如看源码。源码如下,

    public static long round(double a) {
        if (a != 0x1.fffffffffffffp-2) // greatest double value less than 0.5
            return (long)floor(a + 0.5d);
        else
            return 0;
    }

 我们看到round函数会默认加0.5,之后调用floor函数,然后返回。floor函数可以理解为向下取整。

4.综上,Math.round函数是默认加上0.5之后,向下取整。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值