gpt4 book ai didi

python - 为什么 float() 会切断尾随零?

转载 作者:行者123 更新时间:2023-11-28 21:12:14 24 4
gpt4 key购买 nike

该代码成功地将一个包含许多数字的大文件裁剪为几个带有数字的较小文本文件,但它产生了一个有趣的怪癖。

所有数字都应精确到小数点后四位,例如 2.7400,但它们打印为 2.74。

这是一个文件的片段

0.96
0.53
0.70
0.53
0.88
0.97

为什么会这样?有没有办法解决这个问题,或者这只是 float() 的一个怪癖?

from itertools import islice

def number_difference(iterable):
return float(iterable[-1].strip('\n')) - float(iterable[0].strip('\n'))

def file_crop(big_fname, chunk_fname, no_lines):
with open(big_fname, 'r') as big_file:
big_file.readline()
ifile = 0
while True:
data = list(islice(big_file, no_lines))
if not data:
break
with open('{}_{}.locs'.format(chunk_fname, ifile), 'w') as small_file:
offset = int(float(data[0].strip('\n')))
map(lambda x: str(float(x.strip('\n')) - offset) + '\n', data)
small_file.write('{} {} L\n'.format(len(data), number_difference(data)))
small_file.write(''.join(map(lambda x: str(round((float(x.strip('\n')) - offset),4)) + '\n', data)))
ifile += 1

最佳答案

您可以通过格式化输出来保留零:

例如:如果输出是0.96,

x= 0.96
"{0:.4f}".format(x)

输出:

'0.9600'

虽然输出将是一个字符串..

下面的文章可能是一篇不错的读物: https://docs.python.org/2/tutorial/floatingpoint.html

它解释了为什么 Python 以上述格式显示 float 。

关于python - 为什么 float() 会切断尾随零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34302749/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com