c = 5 / 9 * (f - 32); // 結果永遠是 0
C 語言中 整數除法向零截斷。5 和 9 均為 int,5 / 9 = 0,乘以任何數仍為 0。
// 1. 至少一個運算元改為浮點常量
c = 5.0 / 9 * (f - 32); // 推薦:清晰表達浮點運算
c = 5 / 9.0 * (f - 32); // 同理
c = (float)5 / 9 * (f - 32); // 強制轉型,略顯繁瑣
// 2. 調整運算順序(不推薦,精度損失大)
c = 5 * (f - 32) / 9; // 先乘後除,但仍為整數運算,誤差大
#include <stdio.h>
int main() {
float f, c;
printf("請輸入華氏溫度 f = ");
scanf("%f", &f);
c = 5.0 / 9 * (f - 32); // 關鍵修正
printf("對應攝氏溫度 c = %.2f 度\n", c);
return 0;
}
.0 或 f 後綴(5.0 / 5.0f)。(float)a / b。-Wconversion (GCC/Clang) 或 /W4 (MSVC) 可捕獲隱式整數截斷。