我有一个简单的 C 程序(在树莓派上编译)应该计算17.67 * 20(即353.4)
下面的程序打印出353. printf
是否将其四舍五入?我尝试过“%g
”和“%.1f
”
#include <stdio.h>
#include <math.h>
int absolute_humidity(float temp)
{
float abs_hum = (17.67 * temp);
return abs_hum;
}
int main()
{
float abshum = absolute_humidity(20.0);
printf("%g",abshum);
}
答案 0 :(得分:8)
absolute_humidity returns an `int`
将签名更改为
float absolute_humidity(float temp);
答案 1 :(得分:4)
您的函数absolute_humidity
会返回int
。聪明地将int
强制转换为float
,但这样做会截断.4。
将返回类型更改为float
,一切都应该没问题:
float absolute_humidity(float temp) {
return 17.67 * temp;
}
int main() {
printf("%f", absolute_humidity(20.0));
}
答案 2 :(得分:3)
因为函数absolute_humidity
返回int
。
将其更改为返回float
会输出:353.4
答案 3 :(得分:2)
您正在将计算转换为int
,从而失去精确度。
将absolute_humidity()
更改为:
// Not returning int
float absolute_humidity(float temp)
{
float abs_hum = (17.67 * temp);
return abs_hum;
}
答案 4 :(得分:2)
应该是,
float absolute_humidity(float temp)
{
float abs_hum = (17.67 * temp);
return abs_hum;
}
abs_num结果被强制转换为整数,因为你返回了一个int。