当前位置:主页 > 查看内容

为什么1.01*1.01*1.01=1.030301,而1.01**3=1.0303010000000001

发布时间:2021-09-20 00:00| 位朋友查看

简介:???????今天CSDN的问答栏目中有同学提出了一个很有意思的问题为什么3个1.01直接相乘的结果和1.01的3次方不一样呢 1.01 * 1.01 * 1.01 1.030301 1.01 ** 3 1.0303010000000001 ???????从人类的思维角度看1.01的3次方就是3个1.01相乘结果自然应该相同。不过Pyt……

???????今天CSDN的问答栏目中,有同学提出了一个很有意思的问题:为什么3个1.01直接相乘的结果和1.01的3次方不一样呢?

>>> 1.01*1.01*1.01
1.030301
>>> 1.01**3
1.0303010000000001

???????从人类的思维角度看,1.01的3次方就是3个1.01相乘,结果自然应该相同。不过,Python计算 a b a^b ab的话,并非是 b b b a a a相乘,因为 b b b可以是任意实数,总不能0.5个 a a a相乘吧?

>>> 1.01**(0.5)
1.004987562112089
>>> 1.01**(-0.5)
0.9950371902099892

???????实际上,Python计算 a a a** b b b,是借助内置函数pow()实现的,该函数通过对数计算将 a b a^b ab转换为 e x e^x ex这样固定底数为 e e e的指数函数。

a b = e l o g a b = e b l o g a a^b = e^{loga^b}=e^{bloga} ab=elogab=ebloga

???????理解了这个公式,用Python的内置数学模块math,可以很容易地还原Python就算1.01的3次方的过程。

>>> import math
>>> math.exp(3*math.log(1.01))
1.0303010000000001

???????这与CSDN的问答栏目中那位同学的计算结果完全一致。

;原文链接:https://blog.csdn.net/xufive/article/details/116000544
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!
上一篇:关于净推荐值(NPS)的理解 下一篇:没有了

推荐图文


随机推荐