我正在讀取一個大的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