我正在读取一个大的ascii文件,转换为二进制文件,并对其进行压缩以减小文件大小。我想重新准确地复制原始文件。但是,数字格式化是个问题。我相信原始文件是用唯一标识浮点数所需的最少字符数打印的。Python浮点格式化最小字符
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。我怎样才能做到这一点?另外,我不明白在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位浮点值时,我想要类似的行为。
此致是[重复问题](http://stackoverflow.com/questions/26689004/format-a-float-to-a-string-with-minimum-字符在python),我建议你删除你的旧问题,或者,更好的,删除这一个,并编辑前一个.. – gboffi 2014-11-02 09:44:42