42

我正在从文件中读取数据,对其进行修改并将其写入另一个文件。新文件将被另一个程序读取,因此保留准确的格式至关重要

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

1.000000

我的脚本对列应用了一些数学运算并应返回

2.000000

但目前返回的是

2.0

my_float = 2.0例如,对于文件,我将如何编写浮点数my_float = 2.00000

4

5 回答 5

80

将其格式化为小数点后 6 位:

format(value, '.6f')

演示:

>>> format(2.0, '.6f')
'2.000000'

format()函数按照给定的格式说明将值转换为字符串。

于 2013-03-25T15:50:03.347 回答
7

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

f"{value:.6f}"

例子:

> print(f"{2.0:.6f}")
'2.000000'
于 2020-09-16T02:08:57.153 回答
5

我已经尝试了 n 种方法,但没有一种方法能像我想要的那样奏效,最后,这对我有用。

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

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

于 2018-08-30T09:17:50.273 回答
2

上面是使用 format() 命令的答案,但如果您使用需要表示精确值的浮点数,您可能需要查看 Decimal 标准库对象。您可以在其上下文类中设置精度和舍入,但默认情况下,它将保留您放入其中的零的数量:

>>> import decimal
>>> x = decimal.Decimal('2.0000')
>>> x
Decimal('2.0000')
>>> print x
2.0000
>>> print "{0} is a great number.".format(x)
2.0000 is a great number.
于 2013-03-25T17:35:38.797 回答
2

我在 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

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

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

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

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

于 2021-05-06T06:59:36.130 回答