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)); )这两句合起来也正确.为什么,怎么想都想不通 .求高手解答.谢谢了...

解决方案 »

  1.   

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

  2.   

    首先谢谢你的回答.
    像你这样改的确可以,但是我把整个(60*60*24*365*1000)写成long型为什么就不可以了?
      

  3.   

    还有那个好像也没有溢出,,int型最大可以存储2147483647这么多,而(60*60*24*365*1000)只有1471228928...