C言語なら俺に聞け! Part 120
■ このスレッドは過去ログ倉庫に格納されています
0334デフォルトの名無しさん
2006/01/19(木) 15:36:53int main(void) {
double tmp1, tmp2, tmp;
tmp1 = 0.004004004;
tmp2 = tmp1 * tmp1;
tmp = tmp2 - tmp1 * tmp1;
if(tmp >= 0)
printf("tmpは0以上の値: %e\n", tmp);
else
printf("tmpは負の値: %e\n", tmp);
return 0;
}
このソースをコンパイルしてプログラムを実行すると、最終的にtmpには0が格納されて、
標準出力には「tmpは0以上の値: 0〜」と出力されて欲しいところですが、
実際に実行するとなぜかtmpには非常に小さい負の値が格納されていて、
「tmpは負の値〜」と出力されてしまいます。これは何が間違っているのでしょうか。
tmpは0以上の値〜と表示させるにはどこをどのように修正すればよいのでしょうか。
環境は Redhat Linux 9 + gcc-3.2.2-5 です。
■ このスレッドは過去ログ倉庫に格納されています