【问题标题】:What is the difference between radius*radius and radius**2? [duplicate]半径*半径和半径**2有什么区别? [复制]
【发布时间】:2021-10-18 13:41:08
【问题描述】:

在这种情况下,两个输入都是半径= 5 首先:

radius = float(input("Enter the radius: "))
circle = 3.1416*radius**2
print(circle)

输出为78.53999999999999

第二个是:

radius = float(input("Enter the radius: "))
circle = 3.1416*radius*radius
print(circle)

输出为78.54

【问题讨论】:

  • 不同之处在于第一个是3.1416*(radius*radius),第二个是(3.1416*radius)*radius。顺便说一句,在math.pi 处有一个更准确的 pi 常数。

标签: python input multiplication pi square


【解决方案1】:

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

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

换句话说,浮点乘法不是关联的。 (x * y) * y 不保证等于x * (y * y)

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

【讨论】:

    【解决方案2】:

    不同之处在于,在第一个中你正在做3.1416*(radius*radius),而在第二个中你正在做(3.1416*radius)*radius

    ** 的优先级高于*,因此在x * y ** 2 中,首先评估y**2。但在x * y * y 中,运算符的优先级相同,因此从左到右进行计算。

    顺便说一下,math.pi 上提供了一个更准确的 pi 常数。

    【讨论】:

      猜你喜欢
      • 2021-09-28
      • 2020-10-06
      • 1970-01-01
      • 2020-09-12
      • 2014-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多