[Python] 如何將浮點數完整保存成字串 (與還原成浮點數)?

[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

 

(本頁面已被瀏覽過 698 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料