【python】math.pow(),pow() 和 **进行指数运算的问题

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

相信认真学习的小伙伴一定会遇到这个问题,看到这里我先蟹蟹你的努力学习,才能让你看见我的贴子。(别忘点赞关注哟!!)

首先对三种指数运算的形式进行介绍:

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.

题目:

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汲海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值