2017-01-14 7 views
0

私は今、私は2つの数字、V =(5.41、4)から= 4 1 VY、= 4別min.yを比較したい本当のステートメントはなぜ偽ですか?

struct vector2raw { 
    real_t x, y; 
}; 
struct vector2 : public vector2raw { 
    vector2() { null(); } 
    vector2(real_t x, real_t y) { this->x = x; this->y = y; } 
    vector2(const vector2 &v) { x = v.x; y = v.y; } 
and so on 

を "生ベクター" から継承したクラス、ベクトルを持っていますfrom min =(4,4)。これは、2つの等しい数を比較すると奇妙なケースに過ぎず、他のケースは正しく実行されます。私は常に偽になる(4> = 4)(v.y> = min.y)。何が問題なの?

real_tは UPDを倍増するために定義されています。これはどうやらあなたは==で浮動小数点数を比較している(あなたが再現可能な例を挙げていない)C++

+0

プログラミング言語は、のように – JJJ

+0

@JJJてSetPrecisionと、C++ languge –

+0

トライデバッグに役立つだろう言及:http://stackoverflow.com/a/6722297/2266462 – vovkasm

答えて

1

で書かれています。

これらの数値が整数値でなければ、うまくいかない考えです。初心者にとっては一般的にはうまい考えです。

2つの浮動小数点値は等しいと見なすことができます。追加小数点の提示を要求しないときに同じプレゼンテーションを行いますが、実際にはそれ以外の場合は非常に重要でない数字が異なります。

この問題に遭遇した初心者では、“という言葉が使われていました。科学者は浮動小数点数”(またはその周辺、忘れやすい記憶からのタイトル)について知っておくべきことがあります。

ここ数年、私は実際の技術的なものなどは今日の学生にとっては難しいと言われているので、その参照を与えて批判されてきました。そして人々は、ウィキペディアのシンプル・エディションのような、より簡単な代替手段を提案しています。しかし、私はそれらのどれも覚えていない。

関連する問題