使用Python测试随机点是否属于圆周

Rib*_*ibz 2 python

我试图使用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
Run Code Online (Sandbox Code Playgroud)

但是,当我测试看点是否实际上在圆周上时,我做了这个

x ** 2 + y ** 2 == 50 ** 2
Run Code Online (Sandbox Code Playgroud)

但我明白了

False
Run Code Online (Sandbox Code Playgroud)

为什么是这样?

Eri*_*ard 6

这是浮点不精确的结果.一般来说,比较两个浮点数是否相等是一个坏主意,你应该测试它们是否在一定数量的彼此之内.例如,

epsilon = 0.000001
print abs(x ** 2 + y ** 2  - 50 ** 2) <= epsilson
Run Code Online (Sandbox Code Playgroud)

另请参见:我应该如何进行浮点比较?