为什么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.
答案 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
是华氏度,C
是5/9
常数,A
是C*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