有人可以帮助我理解为什么这会给出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)
在C++中,5/9将结果计算为整数,因为两个操作数都是整数.您需要向编译器提供您希望结果为float/double的提示.你可以通过明确地转换其中一个操作数来实现((double)5)/9;
编辑
因为它被标记为C++,你可以使用它更优雅地进行铸造static_cast.例如:static_cast<double>(5)/9.虽然在这种特殊情况下你可以直接使用5.0/9来获得所需的结果,但是当你有变量而不是常数值(例如5)时,转换会很有用.
| 归档时间: |
|
| 查看次数: |
118667 次 |
| 最近记录: |