C ++简单的华氏温度转换

时间:2014-11-16 22:11:52

标签: c++

我正在尝试创建一个简单的程序,该程序接受用户输入的摄氏值,并将其转换为华氏度。

#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,为什么会这样?

1 个答案:

答案 0 :(得分:5)

这是因为你乘以5 / 9,由于整数除法而为零。

如果你改变这样的括号

celsius = ((farenheit - 32) *  5) / 9;

你会得到正确的结果。

由于您使用括号(5 / 9),编译器会在执行乘法之前计算该值。由于(5 / 9)是整数表达式,因此编译器执行整数除法,这意味着丢弃小数部分。结果,所有适当的分数变为零。

解决此问题的另一种方法是强制C ++使用浮点除法,方法是将一个或两个数字作为浮点常量(具体地,类型为double的常量),方法是将.0附加到它们,例如:

celsius = (farenheit - 32) *  (5.0 / 9);