littleQ

          終于明白曾經(jīng)他們失落的目光,當(dāng)年的你們是否一樣;間有懈怠或有頹放,難知多久方能補(bǔ)上;今起,不再彷徨!

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            33 Posts :: 0 Stories :: 60 Comments :: 0 Trackbacks
          Date date = new Date();
          Date thirty 
          = new
           Date();
          thirty.setTime(date.getTime()
          -30*24*60*60*1000);
          乍一看,這段代碼"正確無比"。
          比如今天是2008-09-23
          System.out.println(date);

          輸出:Tue Sep 23 14:24:27 CST 2008
          可是

          System.out.println(thirty);

          輸出:Mon Oct 13 07:27:14 CST 2008
          很明顯,結(jié)果是錯(cuò)誤的。原因在:30*24*60*60*1000。date.getTime()是long類型,30*24*60*60*1000是會隱式的轉(zhuǎn)換成long類型,可是在轉(zhuǎn)換之前,就已經(jīng)溢出了!

          System.out.println(30*24*60*60*1000);

          輸出:-1702967296
          已經(jīng)溢出了,再轉(zhuǎn)換成long類型,也是負(fù)數(shù)了。
          但是在乘之前就做類型轉(zhuǎn)換,就不會有問題。30 * 24 * 60 * 60 * 1000L

          在24*24*60*60*1000的時(shí)候,還是不會溢出的,在25的時(shí)候就溢出了。

          posted on 2008-09-23 18:26 littleQ 閱讀(140) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航: