哪一个都不是更准确的,它们都与实际答案在相等的部分上有所不同:
>>> (8885558**0.5)**2
8885557.9999999981
>>> sqrt(8885558)**2
8885558.0000000019
>>> 2**1023.99999999999
1.7976931348498497e+308
>>> (sqrt(2**1023.99999999999))**2
1.7976931348498495e+308
>>> ((2**1023.99999999999)**0.5)**2
1.7976931348498499e+308
>>> ((2**1023.99999999999)**0.5)**2 - 2**1023.99999999999
1.9958403095347198e+292
>>> (sqrt(2**1023.99999999999))**2 - 2**1023.99999999999
-1.9958403095347198e+292
http://mail.python.org/pipermail/python-list/2003-November/238546.html
math模块包装相同名称的平台C库数学函数;math.pow()如果您需要(或只想)与调用C的C扩展具有高度兼容性,则此功能最为有用pow()。
__builtin__.pow()
是Python
的infix*
* 运算符的实现,并且还处理复数,无穷整数幂和模幂(Cpow()不处理任何这些运算符 )。
**更完整。math.sqrt可能只是sqrt的C实现,它可能与有关pow。