相信认真学习的小伙伴一定会遇到这个问题,看到这里我先蟹蟹你的努力学习,才能让你看见我的贴子。(别忘点赞关注哟!!)
首先对三种指数运算的形式进行介绍:
math.pow(x, y):这个函数是math里面的函数,会自动将y转为浮点数进行计算,这个时候得到的结果也是浮点数。
** 运算符:(x ** y)返回的值类型是取决于y,如果y为int型,则会返回int型;如果是float型,则返回float型。
pow():是与**一样的,因为pow里面返回的就是它,pow函数说明如下,接下来我们仅围绕math.pow()和 * * 运算符方式进行讨论。
首先先用指数运算写出四种含义一样的(先近似为一样)
import math
a = math.pow(3, 40)
b = math.pow(3, float(40))
c = 3 ** 40
d = 3 ** float(40)

然后运算得到了以下:
>>>a - c
0.0
>>>a - b
0.0
>>>a - d
0.0
>>>a == b
True
>>>a == c
False
>>>a == d
True
>>>b == c
False
发现:
1.通过这四种方式算得的值,仅有第三种是int形式,同时做差发现都为0.0,这个时候我们以为他们是相等的。
2.发现虽然我们做差都是等于0.0.看似相等,但是真正用==判断的时候,却不相等。
3.虽然发现(1)看似相等,但是这个时候我们将a or b or d 三个float类型的数据进行int转换,这个时候再去减就存在较大差值了。而我们将c转为float,再去最差和==,都是没问题的。这个时候我们怀疑是int的时候,存在数据损失,而float则没什么问题。
>>>int(a) - c -33 >>>int(a) == c False >>>a - float(c) 0.0 >>>a == float(c) True
注意:在不确定数据类型的情况下,比如a的三次方
不能使用a**3.
题目:

本文探讨了Python中指数运算的三种形式:math.pow()、**运算符和pow()函数,通过实例展示了它们在计算结果和数据类型的差异。特别指出,当涉及整数和浮点数运算时,精度问题可能导致看似相等的数值在比较时产生不一致的结果。强调在不确定数据类型的情况下,谨慎使用**运算符进行指数运算。

被折叠的 条评论
为什么被折叠?



