以下fhr_1
的值計算爲0.0 爲什麼fhr_1
不是0.3?司不返回雙重
double fhr_1;
int n_fhr_1 = 9;
int n_fhr_0 = 15;
int n_fhr_2 = 6;
fhr_1 = n_fhr_1/(n_fhr_1 + n_fhr_0 + n_fhr_2);
以下fhr_1
的值計算爲0.0 爲什麼fhr_1
不是0.3?司不返回雙重
double fhr_1;
int n_fhr_1 = 9;
int n_fhr_0 = 15;
int n_fhr_2 = 6;
fhr_1 = n_fhr_1/(n_fhr_1 + n_fhr_0 + n_fhr_2);
您至少需要一個double
類型的操作數。否則,你會得到整數結果(整數除法會發生)
fhr_1 = (double)n_fhr_1/(n_fhr_1 + n_fhr_0 + n_fhr_2);
或者
fhr_1 = n_fhr_1/(double)(n_fhr_1 + n_fhr_0 + n_fhr_2);
或者
fhr_1 = n_fhr_1/((double)n_fhr_1 + n_fhr_0 + n_fhr_2);
你可以閱讀更多有關劃分規則上msdn。
我喜歡你是第一個發帖,還有3個更多的答案基本上說同樣的事情。 –
@尼克我傾向於同意這種說法。但是當幾秒鐘後發佈其他答案時,我們可以認爲它們不是簡單的原始答案的複製/粘貼。 – Guillaume
如果是這種情況,請從我的聲明中排除這些答案。 –
double fhr_1;
int n_fhr_1 = 9;
int n_fhr_0 = 15;
int n_fhr_2 = 6;
fhr_1 = (double)n_fhr_1/(n_fhr_1 + n_fhr_0 + n_fhr_2);
您必須將其中一個操作數加倍,這樣它會將其計算爲double。
你不能簡單地分開整數,你會得到0因爲四捨五入。 嘗試改爲:
fhr_1 = ((double)(n_fhr_1))/(n_fhr_1 + n_fhr_0 + n_fhr_2);
是否有一個很好的理由,爲什麼你的變量是這樣命名的?除此之外,他們沒有使用lowerCamelCase。 –
對您的問題的更一般的回答:表達式的類型不依賴於其結果被分配到的變量的類型。在評估賦值的右側時,編譯器不會查看左側,因此'fhr_1'是double的事實對於對'n_fhr_1 /(n_fhr_1 + n_fhr_0 + n_fhr_2)'的評估沒有影響。 – phoog