2016-10-09 10 views
0

浮動小数点型の2つの変数をC++で正確に比較するにはどうすればよいですか?1つは宣言時に初期化され、もう1つはプログラムで計算されますか?C++の浮動小数点型の2つの変数の正確な比較

値が0.5または0.25の2つの変数を比較しているときに、プログラムは目的の出力を示していますが、値が0.333333または0.666667の2つの変数を比較しても、プログラムは出力しません。私が間違っているところを教えてくれませんか?正しいコードを書いて手伝ってください。私は初心者であり、あなたから学ぶのは素晴らしい経験になるでしょう。ご心配いただきありがとうございます。ここで は、出力の一部とコードです:

  1. OUTPUT 1
  2. OUTPUT 2
+2

http://stackoverflow.com/questions/588004/is-floating-point-math-broken – PRP

+2

このリンクは私の問題の半分を解決します。今、私はなぜ私が期待された結果を得ていないのか知っていますが、私はこの問題を解決できる方法ですか? –

+3

http://stackoverflow.com/questions/17333/most-effective-way-for-float-and-double-comparison – dfri

答えて

0

私の英語を話すが、私はあなたが私を得ることを願って、十分ではありません。まず、浮動小数点型について知っていなければなりません。可変型には2つの定義があり、精度と範囲です。 浮動小数点型は32ビット範囲です。 1ビットはシンボル、8ビットはexp、23ビットは仮数です。したがって、浮動小数点型変数の精度は2^23 = 8388608で、合計7ビットです。しかし、一般的には6ビット精度のコンソール出力を使用します。あなたの 'a'変数は0.6666670(7ビット)で、 'b'変数は0.6666666(7ビット)です。明らかにequal.Youではありません。私はprintf()関数を使ってビット制限のパラメータで出力しようとすることができます。あなたは彼らの本当の価値を得ることができます。私はあなたを助けることができればと思います。

関連する問題