以下内容:
>>>import struct
>>>struct.unpack('!d', ('40d11998e5035288').decode('hex'))[0]
>>>
>>>17510.3889778429
我希望能够将值17510.3889778429打印到.csv输出文件。出于某种原因,当我将其写入文件时,它会舍入小数并且只写:
17510.3889778
如何以更高的精度打印?
谢谢, 奈德
答案 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'