相关疑难解决方法(0)

哪个在Python中更快:x**.5还是math.sqrt(x)?

我一直在想这个问题.正如标题所说,哪个更快,实际功能还是简单地提升到半功率?

UPDATE

这不是过早优化的问题.这只是底层代码实际工作原理的问题.Python代码的工作原理是什么?

我发送了Guido van Rossum电子邮件,因为我真的很想知道这些方法的不同之处.

我的电子邮件:

在Python中至少有3种方法可以做平方根:math.sqrt,'**'运算符和pow(x,.5).我只是好奇每个实现的差异.谈到效率哪个更好?

他的回答是:

pow和**是等价的; math.sqrt不适用于复数,也不适用于C sqrt()函数的链接.至于哪一个更快,我不知道......

python performance

175
推荐指数
5
解决办法
6万
查看次数

哪个更准确,x**.5还是math.sqrt(x)?

我最近发现x**.5并且math.sqrt(x)并不总是在Python中产生相同的结果:

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
Run Code Online (Sandbox Code Playgroud)

检查低于10**7的所有整数,这两种方法对几乎正好0.1%的样本产生不同的结果,对于较大的数字,误差的大小增加(缓慢).

所以问题是,哪种方法更准确?

python floating-point

22
推荐指数
3
解决办法
6028
查看次数

使用数学模块中的平方根函数

我知道我可以使用找到表达式的平方根math.sqrt(x).

我也知道我可以找到平方根x**0.5.

两个为什么呢?这不是非pythonic吗?有什么用的math.sqrt()时候,我们可以直接将其提升到0.5次方?

python math square-root

3
推荐指数
1
解决办法
1116
查看次数

标签 统计

python ×3

floating-point ×1

math ×1

performance ×1

square-root ×1