C言語浮動小数点数と0値の比較
644 ワード
#include
int main()
{
double tmp = 0.3;
printf("%d
", (int)(tmp*10) );
return 0;
}
上記のプログラムの結果、私が飛び出したのは2です.明らかに欲しい結果と合わない.
理由は、floatタイプでもdoubleタイプの変数でも精度に制限があるため、tmpは0.2999999の可能性があるため、修正値を追加する必要があります.
printf("%d", (int)( (tmp+0.00001)*10) );
floatを0と比較する必要がある場合は、次の手順に従います.
#include
int main()
{
double tmp = 0.0;
if(tmp>0-0.000001 && tmp<0+0.000001)
printf("tmp == 0
");
else
printf("tmp != 0
");
return 0;
}