重複の可能性:
Pythonでの浮動小数点の等式
Pythonコードについて小さな「問題」があります(現在、バージョン2.5をikaゲームエンジンで使用しています)。私は現在、ゲームのオブジェクトのスクリプトを作成しています。2つの浮動小数点数を比較しても安全かどうかを知りたいのですが、次のようになります。
私が現在行っていることの簡単な例を示します。
すべてのオブジェクトには、浮動小数点で表される0〜9の速度があります。例えば
speed = 4.83
cord_x = 10.0
cord_y = 10.0
AddMovementメソッドがあります。これはX、Y値を設定し、オブジェクトの目標座標を表します。
target_x = 25.0
target_x = 26.75
movement = True # This represents if the object is moveing or not
すべてのフレームで、最大速度は次の値に等しくなります。
maximum_x_speed = abs(cord_x-target_x)
maximum_y_speed = abs(cord_y-target_y)
そして、実際の速度は次のようになります。
# Get the real X speed in this frame
if maximum_x_speed < speed:
real_x_speed = maximum_x_speed
else:
real_x_speed = speed
# Get the real Y speed in this frame
if maximum_y_speed < speed:
real_y_speed = maximum_y_speed
else:
real_y_speed = speed
ここで、このreal_x_speed値とreal_y_speed値に基づいて、座標からこの値を減算します。
if target_x < cord_x:
cord_x -= real_x_speed
elif target_x > cord_x:
cord_x += real_x_speed
if target_y < cord_y:
cord_y -= real_y_speed
elif target_y > cord_y:
cord_y += real_y_speed
そして最後に、私は平等をチェックします
if cord_x == target_x and cord_y == target_y:
# Halt movement, reached goal
movement = False
過去に0.1の問題で浮動小数点エラーが発生しましたが、これが何らかのエラーを引き起こすのではないかと心配しています。またはこれは論理的に不可能ですか?
文法ミスがあったらごめんなさい。英語は私の母国語ではありません...このロジックを変更する必要があるかどうかにかかわらず、いくつかのヒントをいただければ幸いです。