首页 > 解决方案 > Python中具有可变指数的科学记数法文字

问题描述

字面量3e4代表floatpython中的30000(至少3.8)。

>>> print(3e4)
30000.0

以下代码的语法显然是无效的:

x=4
3ex

3ex不是一个有效的表达,但这个例子可以帮助我提出我的问题:

显然,表达式3*10**4代表相同的数字,但我这里的问题纯粹与科学记数法文字有关。只是出于我的好奇心,有没有一种方法可以使用具有可变功率的相同语法,比:

x=4
eval(f"1e{x}")

3e4和之间的一个细微差别3*10**4是类型(分别为 float 和 int)。在计算这两个表达式时,执行时间是否也存在差异?

标签: pythonscientific-notation

解决方案


对于您的第一个问题:不,文档不建议您可以。

有没有办法使用具有可变功率的相同语法?

当 float从 string 实例化时,它会调用 CPython C 库PyOS_string_to_double来处理在将字符串直接传递给 C 函数doc.之前使 str 区域设置感知 ( vs ) 处理。,strtod

同时PyOS_string_to_double 的文档没有提到配置指数的任何特殊方法。

对于您关于性能的第二个问题,这很容易进行基准测试。但是,我们没有可作为基准的候选人。所以,这是一个没有实际意义的问题。

执行时间是否也存在差异?

我希望这能满足你的好奇心。如果没有,请随时深入研究我链接的 C 代码。


推荐阅读