将浮点数转换为字符串时避免使用科学计数法

3
浮动(float):
fl = 0.000005

float 类型转换为 String 时,结果为 str(fl)=='5e-06'。但是,我希望将其转换为 str(fl)='0.000005' 以便导出到 CSV 文件。

如何实现这一点?


你需要使用 str() 吗?还是可以像这样使用 '{:f}'.format(fl) - grc
正如grc所说,"{:f}".format(fl)将实现你想要的功能。 - Padraic Cunningham
@PadraicCunningham @grc 我遇到了异常 Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: zero length field name in format - user2763361
2
Python的哪个版本?"{0:f}".format(fl)可行吗? - Padraic Cunningham
也许可以使用'{0:.16f}'.format(fl).rstrip('0') - grc
2个回答

1

使用

fl = 0.00005
s = '%8.5f' % fl
print s, type(s)

给出

0.00005 <type 'str'>

如果你不想要额外的数字,可以使用 %g(虽然它会对例如 0.000005 使用指数符号)。例如参见:
fl = 0.0005
s = '%g' % fl
print s, type(s)

fl = 0.005
s = '%g' % fl
print s, type(s)

给予

0.0005 <type 'str'>
0.005 <type 'str'>

2
%g 会给出类似于 0.000005 的科学计数法表示。顺便说一下,你的 str 调用是不必要的。 - interjay
@interjay 感谢您的评论,我已相应更新了我的答案。 - Michel Keijzers

1

您可以使用标准字符串格式选项来指定所需的精度。

>>> fl = 0.000005
>>> print '%.6f' % fl
0.000005

1
如果我只想要与我指定的 fl 完全精度相同,该怎么办呢?因此,如果我设置 fl = 0.00214,我希望 string = '0.00214',或者如果我设置 fl = 0.0000000006,我希望 string = '0.0000000006' - user2763361

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接