C++简单的Farenheit转换

use*_*750 1 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;
}
Run Code Online (Sandbox Code Playgroud)

它总是打印值为0,为什么会这样?

das*_*ght 5

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

如果你改变这样的括号

celsius = ((farenheit - 32) *  5) / 9;
Run Code Online (Sandbox Code Playgroud)

你会得到正确的结果.

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

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

celsius = (farenheit - 32) *  (5.0 / 9);
Run Code Online (Sandbox Code Playgroud)