1. 程式人生 > >親歷浮點數計算精度導致錯誤

親歷浮點數計算精度導致錯誤

v0->v1是一條朝右下的線段,用下面程式碼計算點v3在直線上方還是下方
v0x = -254.923599
v0z = 365.348907
v1x = -249.52359
v1z = 360.148895

v3x = -251.361771
v3z = 361.919006
x = v0x + (v1x-v0x)*(v3z-v0z)/(v1z-v0z)
y = v0z + (v1z-v0z)*(v3x-v0x)/(v1x-v0x)
print(x,y) #-251.36178101398212 361.9189963568999
顯然(x,v3z)線上段右邊,因為x>v3x
而(v3x,y)線上段下面,因為y