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。