文字3e4
代表Python中的float
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)。
在计算这两个表达式时,执行时间是否也存在差异?
最佳答案
对于您的第一个问题:不,文档并不建议您可以这样做。
Is there a way to use the same syntax with a variable power?
当 float 为 instantiated from a string 时,它调用 CPython C 库 PyOS_string_to_double在将字符串直接传递给 C 函数 strtod
之前,它会处理使 str 区域设置感知(.
与 ,
)doc .
同时documentation for PyOS_string_to_double没有提到配置指数的任何特殊方法。
对于您关于性能的第二个问题,这很容易进行基准测试。但是,我们没有可以作为基准的候选人。所以,这是一个没有实际意义的问题。
Is there also a difference in execution time perhaps?
希望这能满足您的好奇心。如果没有,请随意深入研究我链接的 C 代码。
关于python - Python 中带有变量指数的科学记数法文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66591866/