攝氏度 = 5/9 × (華氏度 - 32)
關鍵點:5/9 在整數除法中結果為 0,必須寫成 5.0/9 或 5/9.0 強制浮點運算。
#include <stdio.h>
int main()
{
float fahrenheit, celsius;
printf("請輸入華氏溫度: ");
scanf("%f", &fahrenheit);
celsius = 5.0 / 9 * (fahrenheit - 32);
printf("%.2f °F = %.2f °C\n", fahrenheit, celsius);
return 0;
}
請輸入華氏溫度: 98.6
98.60 °F = 37.00 °C
| 寫法 | 結果 | 原因 |
|---|---|---|
5/9 * (f-32) | 0 | 整數除法截斷 |
5.0/9 * (f-32) | 正確 | 浮點除法 |
(f-32) * 5/9 | 可能錯誤 | 左結合性,先乘後除仍可能整數除法 |
(f-32) * 5.0/9 | 正確 | 首項為浮點 |
float f2c(float f) { return (f-32)*5.0/9; }
float c2f(float c) { return c*9.0/5 + 32; }
「整數除法截斷」是 C/C++/Java/C# 等語言新手最常踩的坑,任何涉及除法的公式,習慣在常數加 .0。