我如何以编程方式获取这样的 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)
我必须承认我以前从未见过这种语法。
