重複の可能性:
浮動小数点数の精度の問題への対処
私はOpenGlアニメーションを作成しており、float変数「time」を使用して時間を追跡しています。「time」変数を0.01ずつインクリメントしています。「time」が整数値に達するたびに満たす必要がある特定の条件があります。問題は、特定の時間が経過すると、floatインクリメントが奇妙な動作を示すことです。time = 0から開始し、「time」が0.83に達した後、次の値は0.839999であることがわかります。これは浮動小数点の精度に関連している可能性があるので、double / long doubleを使用してみましたが、値1.00に到達する代わりに、コードが値1.0000007に到達していることがわかりました。
「0.01」ではなく「0.01f」ずつインクリメントしてみましたが、うまくいきませんでした。これはVisualStudioのバグですか、それとも間違った方法で行っていますか?コードを投稿することはできますが、ある場所で「時間」を割り当て、他の場所で使用されているだけなので、あまり役に立たないと思います。