繁体   English   中英

Python 中具有可变指数的科学记数法文字

[英]Scientific notation literal with variable exponent in Python

文字3e4表示 python 中的float 30000(至少为 3.8)。

>>> print(3e4)
30000.0

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

x=4
3ex

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

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

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

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

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

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

When float is instantiated from a string , it calls out to a CPython C library PyOS_string_to_double to which handles making the str locale-aware ( . vs , ) before passing the string directly to the C function strtod doc .

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

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

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

我希望这能满足你的好奇心。 如果没有,请随意挖掘我链接的 C 代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM