为什么printf四舍五入?

Gre*_*reg -1 c floating-point printf

我有一个简单的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);
}
Run Code Online (Sandbox Code Playgroud)

sr0*_*853 8

absolute_humidity returns an `int`
Run Code Online (Sandbox Code Playgroud)

将签名更改为

float absolute_humidity(float temp);
Run Code Online (Sandbox Code Playgroud)