2012-06-20 25 views
1

以下:Python的输出到文件更高的浮点精度

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

我想能值17510.3889778429打印到.csv输出文件。出于某种原因,当我写这篇文章的文件后,便将小数,只写道:

17510.3889778 

我怎么会打印此以更高的精度?

感谢, 斯内德

+2

哪来用于写文件的代码? – TJD

+0

您使用的是什么版本的Python?这是一个在最新版本的Python中已经解决的已知问题(例如,2.7.3);请参阅http://bugs.python.org/issue13573 –

+0

顺便说一下,看起来像http://stackoverflow.com/questions/8455253是可能的重复。 –

回答

2

假设你正在使用Python的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'