我正在尝试创建一个简单的程序,该程序接受用户输入的摄氏值,并将其转换为华氏度。
#include <iostream>
using namespace std;
int main()
{
float celsius, farenheit;
cout << "Enter a temperature in farenheit ";
cin >> farenheit;
celsius = (farenheit - 32) * (5 / 9);
cout << celsius;
return 0;
}
它始终打印值为0,为什么会这样?
答案 0 :(得分:5)
这是因为你乘以5 / 9
,由于整数除法而为零。
如果你改变这样的括号
celsius = ((farenheit - 32) * 5) / 9;
你会得到正确的结果。
由于您使用括号(5 / 9)
,编译器会在执行乘法之前计算该值。由于(5 / 9)
是整数表达式,因此编译器执行整数除法,这意味着丢弃小数部分。结果,所有适当的分数变为零。
解决此问题的另一种方法是强制C ++使用浮点除法,方法是将一个或两个数字作为浮点常量(具体地,类型为double
的常量),方法是将.0
附加到它们,例如:
celsius = (farenheit - 32) * (5.0 / 9);