首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么使用十进制值的指数表示法会失败?

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

Stack Overflow用户
提问于 2013-05-11 12:42:02
回答 3查看 6.9K关注 0票数 4

传统上,1e3的意思是10**3

代码语言:javascript
运行
复制
>>> 1e3
1000.0
>>> 10**3
1000

e**3相比,类似的情况是exp(3)

代码语言:javascript
运行
复制
>>> exp(3)
20.085536923187668
>>> e**3
20.085536923187664

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

代码语言:javascript
运行
复制
>>> exp(3.1)
22.197951281441636
>>> e**3.1
22.197951281441632

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

代码语言:javascript
运行
复制
>>> 1e3.1
  File "<stdin>", line 1
    1e3.1
        ^
SyntaxError: invalid syntax
>>> 10**3.1
1258.9254117941675

这表明Python也不喜欢1e3.1Fortran。无论如何,它可以是一个标准的(!)为什么会这样呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-11 12:52:50

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

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

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

票数 13
EN

Stack Overflow用户

发布于 2013-05-11 12:52:36

你似乎把文字的语法和操作符混在一起了。虽然您可以声称1e3.1遵循您的“约定”,但是对于Python interpeter来说,1e3.1不是一个有效的文字表达式,这一点应该非常清楚。该语言具有已定义的标准语法,并且该语法不支持将浮点文字表达式作为其数值文字的“指数”。

Python数字文本中的"e“不是运算符(就像小数点一样)。所以你期望Python的文字语法应该支持一些“约定”...基于你预测到的某种模式。并不是特别合理。

票数 4
EN

Stack Overflow用户

发布于 2013-05-11 12:57:16

docs

代码语言:javascript
运行
复制
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  
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16493830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档