以下:
>>>import struct
>>>struct.unpack('!d', ('40d11998e5035288').decode('hex'))[0]
>>>
>>>17510.3889778429
我希望能够将值 17510.3889778429 打印到 .csv 输出文件。出于某种原因,当我将其写入文件时,它会舍入小数点并且只写:
17510.3889778
我将如何以更高的精度打印它?
谢谢,内德
以下:
>>>import struct
>>>struct.unpack('!d', ('40d11998e5035288').decode('hex'))[0]
>>>
>>>17510.3889778429
我希望能够将值 17510.3889778429 打印到 .csv 输出文件。出于某种原因,当我将其写入文件时,它会舍入小数点并且只写:
17510.3889778
我将如何以更高的精度打印它?
谢谢,内德
假设您使用的是 Python 的 csv 模块,文档说非字符串数据是使用 格式化的str()
,这似乎是发生截断的地方。所以你可以做的一件事是定义你自己的类,以你想要的方式进行字符串化:
class myFloat( float ):
def __str__(self):
return "%.12f"%self
x = myFloat( 17510.3889778429 )
print "%s"%x
产量:
17510.388977842900
您可以使用任何适当的方法将数字转换为字符串并将字符串写入 CSV。
>>> x = 17510.3889778429
>>> s = str(x)
>>> s
'17510.3889778'
>>> s = '%17.11f' % x
>>> s
'17510.38897784290'