首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >radius*radius和radius**2的区别是什么?

radius*radius和radius**2的区别是什么?
EN

Stack Overflow用户
提问于 2021-10-18 13:41:08
回答 2查看 68关注 0票数 0

在这种情况下,两个输入都是radius= 5:

代码语言:javascript
复制
radius = float(input("Enter the radius: "))
circle = 3.1416*radius**2
print(circle)

输出为78.53999999999999

第二个是:

代码语言:javascript
复制
radius = float(input("Enter the radius: "))
circle = 3.1416*radius*radius
print(circle)

输出为78.54

EN

回答 2

Stack Overflow用户

发布于 2021-10-18 13:45:40

在第一种情况下,5 ** 2首先计算为精确整数25,然后乘以3.1416以获得精确乘积的浮点近似值。

在第二种情况下,首先计算3.1416 * 5以获得浮点近似,然后再乘以5以获得第二近似。由于float的性质,不能保证这两个值是相同的。

换句话说,浮点乘法不是结合性的。不能保证(x * y) * y等于x * (y * y)

(浮点乘法本身不一定是重复加法,因为没有特殊情况来检查其中一个操作数是否为整数,或者它是哪一个。您可以将3.1416加到自身5次,但是将5加3.1416次是没有意义的。)

票数 1
EN

Stack Overflow用户

发布于 2021-10-18 13:45:22

不同之处在于,在第一个代码中执行的是3.1416*(radius*radius),在第二个代码中执行的是(3.1416*radius)*radius

**的优先级高于*,因此在x * y ** 2中,首先评估y**2。但在x * y * y中,这些运算符具有相同的优先级,因此它们是从左到右计算的。

顺便说一句,在math.pi上有一个更精确的pi常数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69617168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档