传统上,1e3的意思是10**3。
>>> 1e3
1000.0
>>> 10**3
1000与e**3相比,类似的情况是exp(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.1和Fortran。无论如何,它可以是一个标准的(!)为什么会这样呢?
发布于 2013-05-11 12:52:50
带有e的表示法是一个数字文字,是许多编程语言的词法语法的一部分,基于标准形式/科学表示法。
此符号的目的是允许您通过移动点位置来指定非常大/很小的数字。它不允许您将乘以10的任意幂编码为数字字面值。因此,该点和后面的数字甚至不会被识别为数字文字标记的一部分。
如果你想要任意的幂,正如你已经发现的,有数学函数和运算符可以完成这项工作。与数字文字不同,您甚至可以在运行时确定参数值。
发布于 2013-05-11 12:52:36
你似乎把文字的语法和操作符混在一起了。虽然您可以声称1e3.1遵循您的“约定”,但是对于Python interpeter来说,1e3.1不是一个有效的文字表达式,这一点应该非常清楚。该语言具有已定义的标准语法,并且该语法不支持将浮点文字表达式作为其数值文字的“指数”。
Python数字文本中的"e“不是运算符(就像小数点一样)。所以你期望Python的文字语法应该支持一些“约定”...基于你预测到的某种模式。并不是特别合理。
发布于 2013-05-11 12:57:16
从docs
sign ::= '+' | '-'
digit ::= '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'
indicator ::= 'e' | 'E'
digits ::= digit [digit]...
decimal-part ::= digits '.' [digits] | ['.'] digits
exponent-part ::= indicator [sign] digits #no dots allowed here https://stackoverflow.com/questions/16493830
复制相似问题