>celsius = (5 / 9) * (fahren - 32); >不管打什麼fahren數字,celsius都是 0 >我把 5 或 9 換成 5.0 或 9.0, 再compile和execute就正常。 C或Java高階語言重視數字型別,將除法運算(/ operator)分成整數除法及實數除法。 整數除法的商結果為整數,小數忽略。 實數除法的商結果為實數。 決定整數或實數除法是由運算子(operand)型別決定: (1) 整數 / 整數 = 整數商 (2) 實數 / 實數 = 實數商 (3) 整數 / 實數 = ?數商 (4) 實數 / 整數 = ?數商 例子 5/9 屬於情況(1)所以得到結果為0; 至於 5.0 / 9.0 屬於情況(2)所以得到結果有小數。 至於情況(3)及(4)結果為何,可以實驗一下。 (情况 3 跟 4 结果會以最精確的型別為準,輸出實數商) 除了加.0將整數變實數,也可以利用轉型運算子,寫法如下: celsius = ((float) 5 / (float) 9) * (fahren - 32); 數字前面加 (float) 運算子可將其型別轉為float。
沒有留言:
張貼留言