C ++:温度转换器 - 为什么计算返回0

时间:2013-11-27 20:14:38

标签: c++

为什么k值返回0?请帮忙。

double fah, kel;

fah = std::atof(input.c_str());  //convert string input to a double & assign value to be fah degree 
kel = (double)((f + 459.67) * (5/9)); //calculate fah temp to kelvin 
当我在计算中添加“5/9”时,

k值返回0.

4 个答案:

答案 0 :(得分:4)

在C ++中,5/9 == 0因为整数除法。

使用5.0/9

答案 1 :(得分:2)

问题是整数除法。结果如下:

5/9

0。您应该使用浮点类型:

5/9.0 // 9.0 is a double.

答案 2 :(得分:0)

表达式5/9具有整数类型,其结果等于0。 改变(5/9)至少到(5.0 / 9)

答案 3 :(得分:0)

这是一个整数除法问题。另外,您稍微简化了等式:

Dk = C*Df + C*B ===> Dk = C*Df + A

其中Dk是开氏度,Df是华氏度,C5/9常数,AC*Kelvin Offset(也是不变)。这将使您的代码:

const double FtoKMultiplier = 5.0/9.0; // done at compile time
const double FtoKOffset = 459.67 * FtoKMultiplier; // also done at compile time
double fah = std::atof(input.c_str());
double kel = FtoKMultipler * fah + FtoKOffset; // single multiplication and addition at runtime