C++程序将华氏温度转换为摄氏温度

Tor*_*Tor 11 c++

有人可以帮助我理解为什么这会给出0的输出?

#include <iostream>                        
using namespace std;                       

int main() {                               
    float celsius;                         
    float fahrenheit;

    cout << "Enter Celsius temperature: "; 
    cin >> celsius;
    fahrenheit = (5/9) * (celsius + 32);
    cout << "Fahrenheit = " << fahrenheit << endl;

    return 0;                             
}
Run Code Online (Sandbox Code Playgroud)

小智 23

(5/9)默认情况下,将计算为整数除法,并且将为零.尝试(5.0/9)

  • 或者`(摄氏+32)*5/9`. (7认同)

cpx*_*cpx 6

华氏温度到摄氏度 (Fahrenheit - 32) * 5 / 9


Nav*_*een 5

在C++中,5/9将结果计算为整数,因为两个操作数都是整数.您需要向编译器提供您希望结果为float/double的提示.你可以通过明确地转换其中一个操作数来实现((double)5)/9;

编辑 因为它被标记为C++,你可以使用它更优雅地进行铸造static_cast.例如:static_cast<double>(5)/9.虽然在这种特殊情况下你可以直接使用5.0/9来获得所需的结果,但是当你有变量而不是常数值(例如5)时,转换会很有用.

  • @Naveen:因为它是一个C++标记的问题,我不推荐使用C风格的强制转换.相反,我会推荐`static_cast`. (3认同)
  • 为什么将int文字转换为double会更优雅?您可以使用浮点字面量或双字面值,它可以正常工作... (2认同)