2011-03-12 41 views

回答

2

試着這麼做

"%.16f" % f 

這將仍然使用指數格式,如果數量太少,所以你要分別對待這種情況下,例如

"%.16f" % f if f >= 1e-16 else "0.0" 
0

使用特定的格式說明,例如:

>>> f=9*(10**-9) 
>>> str(f) 
'9e-09' 
>>> "%.23f" % f 
'0.00000000900000000000000' 

UPDATE(感謝@Sven):你要使用數字的量取決於數的大小。如果你有很多數字(比如幾萬億),顯然你不需要任何小數。對於小數字你需要更多。這確實是一個醜陋的表現。

+1

IEEE標準保證一個前17個重要小數位的表示將唯一確定一個雙精度數。但是我們在這裏處理固定的逗號表示,所以這個保證在這個上下文中沒有用處 - 只需要嘗試0.000333333這樣的數字,並且您需要更多的數字。 – 2011-03-12 22:51:50

+0

@Sven:哦對,它是17位有效數字,不是17位小數。不適當更新答案以反映這一點 – Claudiu 2011-03-12 22:54:44

相關問題