[問題] long的相除

看板java作者 (wesley)時間14年前 (2012/05/16 23:36), 編輯推噓3(305)
留言8則, 6人參與, 最新討論串1/1
今天遇到了一個Long型態相除的問題 long a = 1; long b = 2; 寫法一: double c = a/b; 結果c = 0 寫法二: double c = (double) a/b; 結果c = 0.5 寫法三: double c = (double) (a/b); 結果c = 0 有人知道為什麼寫法三出來不會是0.5嗎!? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.165.20.44

05/16 23:43, , 1F
因為寫法一出來不是0.5
05/16 23:43, 1F

05/16 23:43, , 2F
寫法三只是先做解法一,再 (把0) 轉成 double
05/16 23:43, 2F

05/17 01:19, , 3F
寫法二是先把a轉成dobule後再除以b(long),所以會是0.5
05/17 01:19, 3F

05/17 09:03, , 4F
參考向上轉型
05/17 09:03, 4F

05/17 11:13, , 5F
重點是你是否知道寫法一的結果,後頭都是運算順序問題
05/17 11:13, 5F

05/18 15:12, , 6F
喔!是我沒有想清楚寫法二,會先去做(double)a
05/18 15:12, 6F

05/18 15:14, , 7F
所以我想最正確的寫法應該會是(double)a / (double)b
05/18 15:14, 7F

05/18 17:07, , 8F
1.0*a/b,想清楚再說......
05/18 17:07, 8F
文章代碼(AID): #1FiybmkO (java)
文章代碼(AID): #1FiybmkO (java)