我正在尝试使用Python在圆周上生成一个随机点。
我有一个圆心(0,0)和半径50.我做了以下。
import numpy as np
angle = 2 * np.pi * np.random.rand()
x = np.cos(angle) * 50
y = np.sin(angle) * 50
但是当我测试看点是否实际上在圆周上时,我做了这个
x ** 2 + y ** 2 == 50 ** 2
但我得到
False
为什么会这样?
答案 0 :(得分:6)
这是浮点不精确的结果。一般来说,比较两个浮点数是否相等是一个坏主意,你应该测试它们是否在一定数量的彼此之内。例如,
epsilon = 0.000001
print abs(x ** 2 + y ** 2 - 50 ** 2) <= epsilson
答案 1 :(得分:3)
浮点运算并不精确,因此测试相等性并不总是像无限精度那样有效。