作者wesley10000 (wesley)
看板java
標題[問題] long的相除
時間Wed May 16 23:36:13 2012
今天遇到了一個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
1F:→ lovdkkkk:因為寫法一出來不是0.5 05/16 23:43
2F:→ tkcn:寫法三只是先做解法一,再 (把0) 轉成 double 05/16 23:43
3F:推 danshu:寫法二是先把a轉成dobule後再除以b(long),所以會是0.5 05/17 01:19
4F:→ chunhsiang:參考向上轉型 05/17 09:03
5F:推 PsMonkey:重點是你是否知道寫法一的結果,後頭都是運算順序問題 05/17 11:13
6F:→ wesley10000:喔!是我沒有想清楚寫法二,會先去做(double)a 05/18 15:12
7F:→ wesley10000:所以我想最正確的寫法應該會是(double)a / (double)b 05/18 15:14
8F:推 PsMonkey:1.0*a/b,想清楚再說...... 05/18 17:07