python - Python 中带有变量指数的科学记数法文字

标签 python scientific-notation

文字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)。 在计算这两个表达式时,执行时间是否也存在差异?

最佳答案

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

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/

相关文章:

c++ - 求科学记数法 (E+XX)

delphi - 如何在Delphi中禁用.AsString中的科学记数法?

Python:可用存储设备的操作系统独立列表

python - 这是处理命令行参数的正确方法吗?

python - 选择文件夹中最大的文件而不是在 Python 中应用几个函数

perl - 在 Perl 中读取和存储数字而不损失精度 (Perl)

gcc - 将工作代码从 double 转换为四精度 : How to read quadruple-precision numbers in FORTRAN from an input file

将 float 转换为 C 中的科学记数法(非标准格式)?

python - 如何计算有多少数据点落在一个 bin 中

python - PySpark 动态列计算