だから私はこのようなものになります機能があります:いくつかの時点で何らかの方法で変数を変更できますか?
float function(){
float x = SomeValue;
return x/SomeOtherValue;
}
を、この機能は非常に大きな負の値をオーバーフローして返します。
float function(){
float x = SomeValue;
cout << x;
return x/SomeOtherValue;
}
、それが働いた:関数はこのように見えたように試してみて、これが起こっていた場所を正確に追跡するために、私はcoutの文を追加しました!もちろん、私はダブルを使って問題を完全に解決しました。しかし、なぜ私はそれを叫んだときに機能が正常に働いたのか不思議です。これは典型的なことですか、それとも私が行方不明の別の場所にバグがありますか?
(それは任意のヘルプだ場合は、フロートに格納されている値がちょうど整数値ではなく、特に大きなものである。私はちょうど鋳造を回避するために、フロートに入れる。)
GCCノートもhttp://gcc.gnu.org/wiki/x87note この素晴らしい動作のために、浮動小数点計算を比較することは、あらかじめ計算された値を使用しない限り、本質的に壊れています。 – hazzen