在Python中的小数点后面的浮点数中添加零

24 python floating-point decimal

我正在读取文件中的数据,修改它并将其写入另一个文件.新文件将被另一个程序读取,因此继续执行确切的格式化至关重要

例如,我的输入文件中的一个数字是:

1.000000
Run Code Online (Sandbox Code Playgroud)

我的脚本将一些数学应用于列并应返回

2.000000
Run Code Online (Sandbox Code Playgroud)

但目前返回的是

2.0
Run Code Online (Sandbox Code Playgroud)

我怎么会写一个浮动例如my_float = 2.0,作为my_float = 2.00000一个文件?

Mar*_*ers 53

将其格式化为6位小数:

format(value, '.6f')
Run Code Online (Sandbox Code Playgroud)

演示:

>>> format(2.0, '.6f')
'2.000000'
Run Code Online (Sandbox Code Playgroud)

format()函数按照给定的格式化指令将值转换为字符串.


Iqr*_*ra. 7

我尝试了很多方法,但都没有达到我想要的效果,直到最后,这对我有用:

foo = 56
print(format(foo, '.1f'))
print(format(foo, '.2f'))
print(format(foo, '.3f'))
print(format(foo, '.5f'))
    
output:
    
56.0 
56.00
56.000
56.00000
Run Code Online (Sandbox Code Playgroud)

这意味着 的第二个参数format采用您必须达到的小数位。请记住,format返回一个字符串。


小智 6

我在 f 字符串中使用变量时遇到问题。当其他方法都失败时,请阅读手册:)

“与常规字符串文字共享相同语法的结果是,替换字段中的字符不得与外部格式化字符串文字中使用的引用冲突。”

https://docs.python.org/3/reference/lexical_analysis.html#f-strings

例证:

my_number = 90000
zeros = '.2f'

my_string = f"{my_number:,{zeros}}"

print (my_string)
90,000.00
Run Code Online (Sandbox Code Playgroud)

my_string = f'{my_number:,{zeros}}'

由于单引号的原因,将不起作用。

包含 f 字符串的引号和 f 字符串中使用的字符串变量应该不同

如果对字符串变量使用单引号,则对 f 模块使用双引号,反之亦然。


Num*_*uis 5

从 Python 3.6 开始,也可以进行f 字符串格式化。这看起来像:

f"{value:.6f}"
Run Code Online (Sandbox Code Playgroud)

例子:

> print(f"{2.0:.6f}")
'2.000000'
Run Code Online (Sandbox Code Playgroud)