You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 11:35:28