C++华氏转摄氏循环程序输出始终为-0的问题排查
华氏转摄氏程序输出异常问题解决
你的代码问题出在整数除法上:在celsius函数里,5/9是两个整数相除,C++会执行整数除法,直接舍去小数部分,结果为0。不管f-32的值是多少,乘以0后结果都是0,当f<32时就会输出-0。
修正后的代码
#include <iostream> using namespace std; double celsius(double f){ // 将其中一个数改为浮点数,触发浮点数除法 return (5.0/9)*(f - 32); } int main() { cout << "Celsius Temperature Table\n\n"; for(int i = 0; i <= 20; i++){ double c = celsius(i); cout << i << "°F is " << c << "°C\n"; } return 0; }
关键修改说明
- 把
5/9改成5.0/9(或者5/9.0、(double)5/9),这样运算时会按照浮点数规则计算,得到正确的0.555...的结果,再乘以f-32就能得到正确的摄氏温度值。 - 额外优化:输出里加上度数符号
°让结果更直观;移除了未使用的<cmath>头文件。
修正后的输出示例
Celsius Temperature Table 0°F is -17.7778°C 1°F is -17.2222°C 2°F is -16.6667°C ... 20°F is -6.66667°C
内容的提问来源于stack exchange,提问作者Lucas Sintim
相关产品推荐
相关产品推荐

