2012-06-20 7 views
1

Следующая:Python Вывод в файл Higher с плавающей запятой Точность

>>>import struct 
>>>struct.unpack('!d', ('40d11998e5035288').decode('hex'))[0] 
>>> 
>>>17510.3889778429 

Я хотел бы иметь возможность печатать значение 17510.3889778429 к выходному .csv файла. По какой-то причине, когда я пишу это в файл, он округляет десятичные и только пишет:

17510.3889778 

Как я печатаю это с более высокой точностью?

Спасибо, Ned

+2

где код для записи файла? – TJD

+0

Какую версию Python вы используете? Это известная проблема, которая уже исправлена ​​в самых последних версиях Python (например, 2.7.3); см. http://bugs.python.org/issue13573 –

+0

Кстати, похоже, что http://stackoverflow.com/questions/8455253 - это возможный дубликат. –

ответ

2

Предполагая, что вы используете модуль Csv Питона, документация говорит, что не-строка данных отформатирован с использованием str(), и что, кажется, где усечение происходит. Так что одна вещь, которую вы могли бы сделать, это определить свой собственный класс, stringizes так, как вы хотите:

class myFloat(float): 
    def __str__(self): 
     return "%.12f"%self 

x = myFloat(17510.3889778429) 
print "%s"%x 

Урожайность:

17510.388977842900 
1

Вы можете преобразовать число в строку, используя любой подходящий способ и записать строку в CSV.

>>> x = 17510.3889778429 
>>> s = str(x) 
>>> s 
'17510.3889778' 
>>> s = '%17.11f' % x 
>>> s 
'17510.38897784290' 
Смежные вопросы