当前位置: 代码迷 >> J2SE >> java中long型的除法解决办法
  详细解决方案

java中long型的除法解决办法

热度:10548   发布时间:2013-02-25 00:00:00.0
java中long型的除法
java中 long t = System.currentTimeMillis(); System.out.println(t/60/60/24/365/1000);这个的答案就正确,而System.out.println(t/(60*60*24*365*1000));输出就错误. (long i1 = 60*60*24*365;
  System.out.println(t/(i1*1000)); )这两句合起来也正确.为什么,怎么想都想不通 .求高手解答.谢谢了...
------最佳解决方案--------------------------------------------------------
主要问题只有一个:
  默认书写数字的方式下,数值是 int 型;
那么连续做乘法,是会溢出的

所以:
  t/(60*60*24*365*1000)
应修改为(加个L):
  t/(60l*60*24*365*1000)
------其他解决方案--------------------------------------------------------
楼上强大啊啊
------其他解决方案--------------------------------------------------------
引用:
主要问题只有一个:
  默认书写数字的方式下,数值是 int 型;
那么连续做乘法,是会溢出的

所以:
  t/(60*60*24*365*1000)
应修改为(加个L):
  t/(60l*60*24*365*1000)

首先谢谢你的回答.
像你这样改的确可以,但是我把整个(60*60*24*365*1000)写成long型为什么就不可以了?
------其他解决方案--------------------------------------------------------
引用:
主要问题只有一个:
  默认书写数字的方式下,数值是 int 型;
那么连续做乘法,是会溢出的

所以:
  t/(60*60*24*365*1000)
应修改为(加个L):
  t/(60l*60*24*365*1000)

还有那个好像也没有溢出,,int型最大可以存储2147483647这么多,而(60*60*24*365*1000)只有1471228928...
------其他解决方案--------------------------------------------------------
(60*60*24*365*1000)只有1471228928.这个我也犯了同个错误.总之谢谢了,,现在懂了.
  相关解决方案