我正在尝试创建一个简单的程序,它接受用户输入的摄氏值,并将其转换为华氏度.
#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,为什么会这样?
这是因为你乘以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)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           61 次  |  
        
|   最近记录:  |