强制python打印一定数量的小数位

use*_*758 1 python python-3.x

我有一个python程序,它需要一些浮点类型值并将其写入文件。

我将这些数字四舍五入到小数点后六位,然后在写入文件之前将其转换为字符串类型。

file.write(str(round(value,6)))
Run Code Online (Sandbox Code Playgroud)

但是,对于某些数字,写入文件的值采用以下格式。

e.g. 3e-06 or 4e-03
Run Code Online (Sandbox Code Playgroud)

如何避免这种情况,而是以十进制格式写出来,例如

0.000003 and 0.004000
Run Code Online (Sandbox Code Playgroud)

如何在小数点后精确打印6位数字。

gmd*_*mds 6

您可以使用f-string f'{value:.6f}'

例:

value = 0.234
print(f'{value:.6f}')

value = 1
print(f'{value:.6f}')

value = 0.95269175
print(f'{value:.6f}')
Run Code Online (Sandbox Code Playgroud)

输出:

0.234000
1.000000
0.952692
Run Code Online (Sandbox Code Playgroud)

另外,在评论中链接的答案中,有提及:g。那可以行得通,但在这种情况下可能行不通,因为g 可以在适当的地方打印科学计数法,丢弃无关紧要的零。考虑一个稍微修改的示例,使用g

value = 0.234
print(f'{value:.6g}')

value = 1
print(f'{value:.6g}')

value = 0.000000000095269175
print(f'{value:.6g}')
Run Code Online (Sandbox Code Playgroud)

输出:

0.234
1
9.52692e-11
Run Code Online (Sandbox Code Playgroud)