によって、小数点の比較は最近、私はプログラムに出くわした:私はどのようにコードが印刷さはいを理解
コードの説明とプロセッサ
float a = 0.7;
if(a < 0.7)
printf("Yes");
else
printf("No");
。しかし、同じ不平等の右側には0.7ではない。 'a'と '0.7'のバイナリ値は同じではありませんか?
なぜ0.7ですか、0.7として使用されますが、変数 'a'は0.7より小さい値を持っています。なぜなら0.7の明確なバイナリ表現がないからです。
であることにより 近い、メイン 中0.7レジスタのメモリとして格納されていないけどさ、あなたもおそらくべき'0.7 'ではなく' a'に '0.7f'を割り当てます。 – paxdiablo
'if(a <0.7f)'と「結果は異なる」 - >たぶん。 'FLT_EVAL_METHOD'の値のような他の要素が適用されます。 – chux
'double'と' float'が数学的な0.7に近づいているのは真ですが、それらが異なっていても 'a <0.7'のようにどちらが大きいのかは詳しくは分かりません。 – chux