浮動小数点に関連する問題を完全に理解していますが、私は説明できない非常に興味深い動作を見てきました。浮動小数点数の不正確さを避ける
float x = 1028.25478;
long int y = 102825478;
float z = y/(float)100000.0;
printf("x = %f ", x);
printf("z = %f",z);
出力は次のとおり
X = 1028.254761 Z =今1028.254780
フローティング番号私は変数xにその割り当てられた場合に、その特定の乱数値(1028.25478)を表すために失敗した場合。変数zの場合、なぜ同じではないのですか?
P.S.私はpellesC IDEを使ってコードをテストしています(C11コンパイラ)。
あなたのコード[私のために同じものを印刷します](https://ideone.com/9zyYyF)。 – dasblinkenlight
小数点以下を小数点以下を使用して印刷してみてください。 '"%.10f "'。 –
これは複製ではありません。私はいくつかの実際の重複があると思いますが、見つけるのは難しいです。基本的に、コンパイラは2番目のケースでは「double」として数式を実行します。 – dasblinkenlight