Python输出以提高浮点精度

时间:2012-06-20 18:29:22

标签: python file-io floating-point precision

以下内容:

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

我希望能够将值17510.3889778429打印到.csv输出文件。出于某种原因,当我将其写入文件时,它会舍入小数并且只写:

17510.3889778

如何以更高的精度打印?

谢谢, 奈德

2 个答案:

答案 0 :(得分:2)

假设您正在使用Python的csv模块,文档说非字符串数据使用str()格式化,这似乎是截断发生的地方。所以你可以做的一件事就是定义你自己的类,按照你想要的方式进行字符串化:

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

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

收率:

17510.388977842900

答案 1 :(得分:1)

您可以使用任何适当的方法将数字转换为字符串,并将字符串写入CSV。

>>> x = 17510.3889778429
>>> s = str(x)
>>> s
'17510.3889778'
>>> s = '%17.11f' % x
>>> s
'17510.38897784290'