我最近发现在Python中,x ** 0.5
和math.sqrt(x)
并不总是产生相同的结果:
Python 2.6.1 (r261:67517, Dec 4 2008, 16:51:00) [MSC v.1500 32 bit (Intel)]
on win32
>>> 8885558**.5 - math.sqrt(8885558)
-4.5474735088646412e-13
检查小于10**7的所有整数,这两种方法在近乎0.1%的样本中产生不同的结果,随着数字越来越大,误差的大小(缓慢地)增加。
因此问题是,哪种方法更准确?