JAVA解惑之—长整除

我们先来看一个短小的程序:

public class LongDivison{

     public static void main(String[ ] args){

          final long millise_per_day  = 24*60*60*1000;

          final long micros_per_day = 24*60*60*1000*1000;

          System.out.println(micros_per_day / millise_per_day);

     }   

 

}

 

其实millise_per_day表示一天中的毫秒数,micros_per_day表示一天中的微妙数,初看结果输出结果应该是1000,但是本程序的结果是5,为什么呢?也许有人会想是因为值太大了超出了long型所能表示的数,但是其实不然,原来JAVA中是首先把micro_per_day的数值计算出来,(注意结果是int型,因为24,60等的数字都是int型的),结果是int型的,已经溢出了,然后再把int型提升为了long型,此时micros_per_day已经比真实值小了200倍,所以结果也是5。正确的写法应该如下:

public class LongDivison{

     public static void main(String[ ] args){

          final long millise_per_day  = 24L*60*60*1000;

          final long micros_per_day = 24L*60*60*1000*1000;

          System.out.println(micros_per_day / millise_per_day);

     }   

 

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值