Код успешно обрабатывает большой файл из многих номеров в несколько меньших текстовых файлов с номером, но он вызывает интересную причуду.Почему float() отключает завершающие нули?
Все номера должны быть до четырех знаков после запятой, например 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
Представления 'float' для 2.74 и 2.7400 идентичны. Невозможно узнать, сколько лишних ненужных нулей было использовано в исходном строковом представлении после того, как оно было преобразовано в 'float'. – paddy
«float» представляет собой число, а конечные нули не являются свойством числа. 2,74 = 2,7400. – user2357112