python - Python中具有可变指数的科学记数法文字
问题描述
字面量3e4
代表float
python中的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)。在计算这两个表达式时,执行时间是否也存在差异?
解决方案
对于您的第一个问题:不,文档不建议您可以。
有没有办法使用具有可变功率的相同语法?
当 float从 string 实例化时,它会调用 CPython C 库PyOS_string_to_double来处理在将字符串直接传递给 C 函数doc.
之前使 str 区域设置感知 ( vs ) 处理。,
strtod
同时PyOS_string_to_double 的文档没有提到配置指数的任何特殊方法。
对于您关于性能的第二个问题,这很容易进行基准测试。但是,我们没有可作为基准的候选人。所以,这是一个没有实际意义的问题。
执行时间是否也存在差异?
我希望这能满足你的好奇心。如果没有,请随时深入研究我链接的 C 代码。
推荐阅读
- matlab-deployment - 如何使用用户预定义的数据设置 mwArray?是否可以混合使用 Matlab 库编译器和 mex 运行时?
- firebase - 应用程序处于前台时未收到 Firebase 推送通知
- excel - 自定义订单排序
- r - 在数据类型列表上使用 cat 函数
- python - Google Vision - 从 xls 读取网址
- javascript - Angular HttpInterceptor:如何在多个条件下使用 RxJS
- java - Talend:将 oracle 输入保存到全局变量
- c# - C# MVC 将 DB2 添加到数据源列表
- php - YII2 我如何处理多对多关系?
- hyperledger-fabric - 在超级账本结构中创建组织单元时出错