注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

IOS & JAVA KEY

(iMilo)

 
 
 

日志

 
 
关于我

All the splendor in the world is not worth a good friend!! Hello my friend!!

网易考拉推荐

长整除小结  

2010-08-12 11:59:30|  分类: java |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

首先我们先看下面的一段代码:

/**

* 长整除

*/

public class Arith

{

    public static void main(String[] args)

    {

        //微秒

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

        //毫秒

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

       

        System.out.println(MICROS_PER_DAY/MILLIS_PER_DAY);

    }

}

按照除法运算我们得到的结果应该是1000,但是实际上运行程序得到的结果却是5,这是为什么呢?

我们先解释24 * 60 * 60 * 1000 * 1000,显然24*60为两个整数相乘结果还是为整型,随着后面相乘的数增加,对于整型来说可能会超过其表示范围,这样就不能正确表示MICROS_PER_DAY的真实值,于是我们来对24 * 60 * 60 * 1000 * 1000进行修改让其在相乘的时候就为长整型,于是我们得到解决方案:24L * 60 * 60 * 1000 * 1000,我们在24后加一个L表示24为长整型,按照不同类型的相乘规则:24L * 60时,首先会将60提升为长整型,然后以此类推:24L * 60 * 60 * 1000 * 1000表示的结果为长整型。

最后的代码如下:

/**

* 长整除

*/

public class Arith

{

    public static void main(String[] args)

    {

        //微秒

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

        //毫秒

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

       

        System.out.println(MICROS_PER_DAY/MILLIS_PER_DAY);

    }

}

小结:在做项目的时候,一定要注意细节,哪怕是数据类型的意义。

  评论这张
 
阅读(422)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017