[Python] 如何將浮點數完整保存成字串 (與還原成浮點數)?
平常用 python 印出浮點數時,通常是使用 “%f” 的方式印出來,
最近才發現這樣似乎會有精準度的問題…
舉例來說,假設我們將變數 a 宣告成 0.1234567890123456789012345,
可以發現它只儲存了小數點後 17 位:
>>> a = 0.1234567890123456789012345 >>> a 0.12345678901234568
用 %f, %s, 和 %e 都沒辦法完整印出這個浮點數的值:
>>> print "%f" % a 0.123457 >>> print "%s" % a 0.123456789012 >>> print "%e" % a 1.234568e-01
找了一下,要完整保留這個值的方法是用 repr(),
而要將這個 repr 字串還原的方式則是 float():
>>> repr(a) '0.12345678901234568' >>> float(repr(a)) 0.12345678901234568
stackoverflow: Converting a Python Float to a String without losing precision
(本頁面已被瀏覽過 729 次)