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);
值是整数。您需要将它们用作浮点数。
这是我的函数代码。主要是我检查温度是开尔文还是华氏度。当我从 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);
值是整数。您需要将它们用作浮点数。