可能重复:
python中的浮点相等
我有一个关于我的 Python 代码的小“问题”(我现在在 ika 游戏引擎中使用 2.5 版)。我目前为我的游戏编写对象脚本,我想知道比较两个浮点数是否安全这种方式:
我将做一个简短的例子来说明我目前所做的事情。
每个对象都有一个速度,从 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 问题,就像......我担心这会导致某种错误。或者这在逻辑上是不可能的?
如果我有语法错误,对不起。英语不是我的母语...如果我应该改变这个逻辑,我真的很感激一些提示。