-1

私は単純なCプログラム (raspberry pi でコンパイル) を持っています。これは 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);
}
4

5 に答える 5

8
absolute_humidity returns an `int`

署名を次のように変更します

float absolute_humidity(float temp);
于 2013-08-30T07:47:05.587 に答える
4

関数absolute_humidityは を返しますintinttoをキャストするのは賢明floatですが、そうすると .4 が切り捨てられます。

戻り値の型をに変更するfloatと、すべてがうまくいくはずです:

float absolute_humidity(float temp) {
    return 17.67 * temp;
}

int main() {
    printf("%f", absolute_humidity(20.0));
}
于 2013-08-30T07:47:05.137 に答える
3

関数が をabsolute_humidity返すためintです。

return に変更すると、float出力が得られます。353.4

于 2013-08-30T07:47:27.937 に答える
2

計算を に変換しているためint、精度が失われます。

変更absolute_humidity():

// Not returning int
float absolute_humidity(float temp)
{
    float abs_hum = (17.67 * temp);
    return abs_hum;
}
于 2013-08-30T07:47:41.460 に答える