我正在读取文件中的数据,修改它并将其写入另一个文件。新文件将被另一个程序读取,因此保留精确格式
至关重要例如,我的输入文件中的一个数字是:
1.000000
我的脚本对列应用了一些数学,应该返回
2.000000
但目前返回的是
2.0
如何将my_float = 2.0
的浮点数作为my_float = 2.00000
写入文件?
答案 0 :(得分:49)
将其格式化为6位小数:
format(value, '.6f')
演示:
>>> format(2.0, '.6f')
'2.000000'
format()
function将值转换为给定formatting instructions之后的字符串。
答案 1 :(得分:1)
使用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.
答案 2 :(得分:0)
我已经尝试了n种方法,但是没有一种方法可以满足我的需求,最后,这对我来说是可行的。
foo = 56
print (format(foo, '.2f'))
print (format(foo, '.3f'))
print (format(foo, '.5f'))
output:
56.0
56.00
56.000
56.00000
意味着format
的第二个参数占据了小数位。请记住,format
返回字符串。
答案 3 :(得分:0)
答案 4 :(得分:0)
我在 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 模块使用双引号,反之亦然。