Java 中floor,round和ceil的区别

java.Math 中有这三个方法:floor,round和ceil

其区别如下:

floor 向下取整 即取不大于原值的最大整数(的double).

说整数只是便于理解,其实floor和ceil返回类型是double类型,而round返回类型的long类型

如:  

Math.floor(10.1)=10.0;  Math.floor(10.6)=10.0 ;
Math.floor(-10.1)=-11.0; Math.floor(-10.6)=-11.0;   //-10.1>-11; -10.6>-11

 

 

ceil 向上取整 即不小于原值的最小整数(的double).

如:

Math.ceil(10.1)=11.0; Math.ceil(10.6)=11.0;
Math.ceil(-10.1)=-10.0; Math.ceil(-10.6)=-10.0;    //-10.1<-10; -10.6<-10

 

 

 

而round的理解比较复杂,我们可以看下源码:

 

  public static long round(double a) {
	 return (long)floor(a + 0.5d);
    }

 

即原值加上0.5后向下取整,再转long类型.这样记忆你可以很轻易的计算而不会混淆.(注意负数的运算顺序)

 

Math.round(10.1)=10; Math.round(10.5)=11; Math.round(10.6)=11;
Math.round(-10.1)=-10; Math.round(-10.5)=-10; Math.round(-10.6)=-11;

 

 -10.1+0.5=-9.6,向下取整为Math.floor(-9.6)=-10.0,所以 Math.round(-10.1)=-10

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值