【问题标题】:Python Output to File Higher Floating Point PrecisionPython 输出到文件更高的浮点精度
【发布时间】:2012-06-20 18:29:21
【问题描述】:

以下内容:

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

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

17510.3889778

如何以更高的精度打印?

谢谢, 内德

【问题讨论】:

标签: python file-io floating-point precision


【解决方案1】:

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

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

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

产量:

17510.388977842900

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-11
      • 1970-01-01
      • 2011-05-17
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多