假设我正在考虑M=N**2
N
是一个整数。似乎numpy.sqrt(M)
返回一个浮点数(实际上是numpy.float64)。
我可以想象,由于数值精度问题,可能会出现N-10**(-16)
返回的情况,在这种情况下,int(numpy.sqrt(M))
将为N-1
。
尽管如此,我的测试N==numpy.sqrt(M)
返回True
,所以看起来没有发生这种近似。
当int(numpy.sqrt(M))
是一个完美的正方形时,我认为M
确实准确吗?如果是这样,对于奖金,背景中发生了什么使它起作用?
答案 0 :(得分:0)
为避免错过1E-15的整数,您可以使用:
int(numpy.sqrt(M)+0.5)
或
int(round(numpy.sqrt(M)))