我有困難以下方式浮點數轉換爲字符串:轉換浮到字符串切割零點小數AFER點在Python
20.02 --> 20.02
20.016 --> 20.02
20.0 --> 20
似乎%g
格式是最好的那個,但我遇到奇怪的結果:
In [30]: "%.2g" % 20.03
Out[30]: '20'
In [31]: "%.2g" % 20.1
Out[31]: '20'
In [32]: "%.2g" % 20.3
Out[32]: '20'
In [33]: "%.2g" % 1.2
Out[33]: '1.2'
In [34]: "%.2g" % 1.0
Out[34]: '1'
In [35]: "%.2g" % 2.0
Out[35]: '2'
In [36]: "%.2g" % 2.2
Out[36]: '2.2'
In [37]: "%.2g" % 2.25
Out[37]: '2.2'
In [38]: "%.2g" % 2.26
Out[38]: '2.3'
In [39]: "%.3g" % 2.26
Out[39]: '2.26'
In [40]: "%.3g" % 2.25
Out[40]: '2.25'
In [41]: "%.3g" % 20.02
Out[41]: '20'
In [42]: "%.3g" % 20.016
Out[42]: '20'
In [43]: "%.20g" % 20.016
Out[43]: '20.015999999999998238'
目前我所知道的唯一的解決辦法是檢查的數量是否是int
和應用%d
代替%f
格式 - 這太複雜了,我認爲。
有誰知道爲什麼上面的東西都有毛病?如何以更簡單的方式做到這一點?
謝謝。
阿凡達可能不會持續太久。 – 2009-11-16 15:47:24
@Jed,現在似乎已經持續了至少一年;) – 2010-12-26 11:07:27