c ++从函数中获取错误的计算

c++ Getting wrong calculation from a function

这是我的函数代码。主要是我检查温度是开尔文还是华氏度。当我从 main 得到 temp_enota = 'F' 时(我这样做是因为我检查了调试),并且 temp = 116 出于某种原因函数 returns 0 当它应该在 46 左右时。任何想法为什么?它适用于开尔文。

float pretvorbaTemp(char temp_enota, float temp) {

    if (temp_enota == 'K') {
        temp = temp - 273.15;
    }
    else if (temp_enota == 'F') {
        temp = (temp - 32) * (5 / 9);
    }
    return temp;

}

从主函数调用

if (temp >= 283 && temp <= 323) {
            temp_enota = 'K';
            zacasna = 1;
            cout << "Vnesena temperatura je v K, kar je enako "<<pretvorbaTemp(temp_enota, temp)<<" C" << endl;
        }
        else if (temp <= 122 && temp >= 50) {
            temp_enota = 'F';
            zacasna = 1;
            cout << "Vnesena temperatura je v F, kar je enako "<<pretvorbaTemp(temp_enota, temp)<<" C" << endl;
        }
        else if (temp >= -10 && temp < 50) {
            temp_enota = 'C';
            zacasna = 1;
            cout << "Vnesena temperatura je v C" << endl;
        }
        else {
            zacasna = 0;
            zacasna2 = 1;
        }

你得到 0 的原因是因为表达式

5/9

将评估为 0,因为这是两个整数值,因此编译器生成代码来执行整数除法。

改成

 5./9

强制浮点数。

这样做:

float pretvorbaTemp(char temp_enota, float temp) {

  if (temp_enota == 'K') {
     temp = temp - 273.15;
  }
  else if (temp_enota == 'F') {
     temp = (temp - 32.0) * (5.0 / 9.0);
  }
  return temp;

}

这里 temp = (temp - 32) * (5 / 9); 值是整数。您需要将它们用作浮点数。