python - 为什么使用十进制值的指数表示法会失败?

标签 python floating-point ieee-754 exponent

<分区>

通常1e3表示10**3

>>> 1e3
1000.0
>>> 10**3
1000

exp(3)e**3 的情况类似。

>>> exp(3)
20.085536923187668
>>> e**3
20.085536923187664

但是现在请注意指数是否为float 值:

>>> exp(3.1)
22.197951281441636
>>> e**3.1
22.197951281441632

这很好。现在来看第一个例子:

>>> 1e3.1
  File "<stdin>", line 1
    1e3.1
        ^
SyntaxError: invalid syntax
>>> 10**3.1
1258.9254117941675

这表明 Python 不喜欢 1e3.1Fortran 也不喜欢。 不管它可能是标准 (!) 为什么会这样?

最佳答案

带有 e 的符号是一个数字文字,是许多编程语言词法语法的一部分,基于标准形式/科学记数法。

此表示法的目的是允许您通过移动点位置来指定非常大/非常小的数字。它并不是为了让您将乘以 10 的任意幂的乘法编码为数字文字。因此,该点和后面的数字甚至不会被识别为数字文字标记的一部分。

如您所见,如果您想要任意幂,可以使用数学函数和运算符来完成这项工作。与数字文字不同,您甚至可以在运行时确定参数值。

关于python - 为什么使用十进制值的指数表示法会失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16493830/

相关文章:

c - 如何在 C 中使用按位和逻辑运算符将无符号数乘以四

c - 为什么我在代码中看到不一致之处?

javascript - Firebug 中的意外结果

algorithm - IEEE754 单精度 - 表示数字一半的通用算法

java - 将 IEEE 754 double 转换为字符串的纯 Java 代码

python - 是否使用 Caffe 还是 Theano 进行 Moore-Penrose 伪逆?

python - 计算整个 Pandas DataFrame 的出现次数

python - 如何使用 django @lazy 装饰器?

python - Django - 基于外键向序列化器和订单列表添加属性

c++ - 与 float 和 float 文字相比的奇怪输出