Python 为什么带十进制值的指数记数法会失败?

Python 为什么带十进制值的指数记数法会失败?,python,floating-point,ieee-754,exponent,Python,Floating Point,Ieee 754,Exponent,通常1e3表示10**3 >>> 1e3 1000.0 >>> 10**3 1000 >>> exp(3) 20.085536923187668 >>> e**3 20.085536923187664 与e**3相比,exp(3)的情况类似 >>> 1e3 1000.0 >>> 10**3 1000 >>> exp(3) 20.085536923187668 >

通常
1e3
表示
10**3

>>> 1e3
1000.0
>>> 10**3
1000
>>> exp(3)
20.085536923187668
>>> e**3
20.085536923187664
e**3
相比,exp(3)的情况类似

>>> 1e3
1000.0
>>> 10**3
1000
>>> exp(3)
20.085536923187668
>>> e**3
20.085536923187664
但是现在请注意,如果指数是一个
浮点值
值:

>>> 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
>1e3.1
文件“”,第1行
1e3.1
^
SyntaxError:无效语法
>>> 10**3.1
1258.9254117941675
这表明
Python
不喜欢
1e3.1
Fortran

无论如何,这可能是一个标准(!)为什么会是这样?

您似乎将文字的语法与运算符混为一谈。虽然您可以声称1e3.1遵循您的“约定”,但很明显,1e3.1对于Python interpeter来说不是一个有效的文本表达式。该语言有一个定义的标准语法,该语法不支持浮点文字表达式作为其数值文字的“指数”


Python数值文本中的“e”不是运算符(大于小数点)。所以您希望Python的文字语法应该支持某种“约定”。。。根据你猜到的一些模式。。。不是特别合理。

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

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

如果你想要任意的幂,正如你所发现的,有数学函数和操作符可以完成这项工作。与数值文字不同,您甚至可以在运行时确定参数值。

来自:


为什么VisualBasic使用
作为注释字符,而在任何其他非疯狂语言中,注释字符用于字符串?这是语言设计者想要的。如果你想咆哮,对他们咆哮。@MarcB总是积极地思考,那么你会注意到问题背后的要点。您的示例
不相关!一、 首先,我不明白为什么我不能为
218
2(1.5)3
。谢谢+一票赞成。显然,这只是一个已经达成的协议,否则,编译器将
1e3.1
识别为一个数字就不会那么困难了。顺便说一句,
Fortran
中的答案也是一样的。我们的答案在“net”中传递。我看到你的在我的帖子发布后进来了,尽管它出现在我的上面。顺便说一句,
Fortran
中也是如此。如果您可以尝试解释
为什么
@Developer编程语言试图遵守标准,即指数部分必须是整数,那就更好了。感谢您的观点和链接,Ashwini。