[問題] Java Puzzlers Quiz 3

看板java作者 (我要看Naruto >_<)時間19年前 (2006/04/10 02:36), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/4 (看更多)
public class LongDivision { 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); } } 這題主要是在解Long Division的問題 不過這邊我想要瞭解的是,將MICROS_PER_DAY與MILLIS_PER_DAY印出來 答案都是正確的計算結果(分別為86400000000與86400000) 不過在做除法的時候,卻是使用int 型態在做除法 因為MICROS_PER_DAY實際在對於int type已經造成overflow 結果在除法的過程中 MICROS_PER_DAY overflow後的運算結果為500654080 而相除之後的結果為5.7946076 所以會印出整數5 在這邊主要的疑問為MICROS_PER_DAY與MILLIS_PER_DAY都已經宣告為long 為何在做整數除法,JVM 卻是使用int ? 難道也是Java Language Spec的一部份嗎? ?_? 這樣的design rule又是否有什麼考量呢? -- Java Puzzlers中文版,天瓏打79折才411元喔 :p -- 嘿嘿..我是huge.. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.206.35
文章代碼(AID): #14ELGc9o (java)
文章代碼(AID): #14ELGc9o (java)