Skip to main content
 首页 » 编程设计

python之将科学计数法转换为人类可读的 float

2025年05月04日17artech

我如何以编程方式获取这样的 float :

1.87491348956e-28 

并将其转换为 float (可能是字符串),如下所示:

0.000000000000000000000000000187491348956 

(我认为这是正确的零数)

请您参考如下方法:

a=1.87491348956e-28 
base,expo = str(a).split('e') 
print '%%1.%df'%(len(base)-2+abs(int(expo)))%a 

编辑:我忘记删除一些格式化部分。最新版本更短一些。

它是如何工作的?

您可以将格式字符串称为递归格式字符串。在第一步中,只有内部部分,即 %d 被解释为格式信息,并被计算出的 float 长度替换。我们称该长度为 X。因此,在第一次格式化之后,剩余的格式字符串读取 %1.Xf 并用于实际格式化数字。请注意,%% 在第一步之后被替换为单个 %。

编辑:

Rob_sigma 添加了一 strip 有更简单解决方案的评论:

a=1.87491348956e-28 
base,expo = str(a).split('e') 
print '%.*f'%(len(base)-2+abs(int(expo)),a) 

我必须承认我以前从未见过这种语法。