【发布时间】:2014-11-02 09:32:23
【问题描述】:
我正在读取一个大的 ascii 文件,将其转换为二进制文件,然后对其进行压缩以减小文件大小。我想准确地复制原始文件。但是,数字格式是一个问题。我相信原始文件打印了唯一标识浮点数所需的最少字符数。
import struct
x = [3.14, 3.1]
y = list(struct.unpack('2f', struct.pack('2f', *x)))
print str(x)
print str(y)
返回 [3.14, 3.1] [3.140000104904175, 3.0999999046325684]
我想像 x 一样打印 y。我怎样才能做到这一点?另外,我不明白 str 函数在幕后发生了什么魔法。你能解释一下吗?我正在使用 Python 2.7。
更新:
import struct
x = [3.14, 3.1]
y = list(struct.unpack('2d', struct.pack('2d', *x)))
print str(x)
print str(y)
上面的代码返回:
[3.14, 3.1]
[3.14, 3.1]
所以 str 函数会截断字符,但仅当值非常接近 64 位浮点值时。当值非常接近 32 位浮点值时,我想要类似的行为。
【问题讨论】:
-
您的问题是 [重复问题] (stackoverflow.com/questions/26689004/…),我建议您删除您的旧问题,或者最好删除这个问题并编辑前一个问题..
标签: python string numbers format