2013-05-26 36 views
3

我想將python中的浮點數圓整爲零小數位。python round留下尾部0

但是,循環方法每次都會留下尾部0。

value = 10.01 
rounded_value = round(value) 
print rounded_value 

結果10.0,但我想10

如何才能實現這一目標?轉換爲int?

+0

取消那個笨蛋;那裏的答案也會在這裏工作,但這更像是一個愉快的巧合。 –

回答

10

傳遞圓潤價值int()擺脫的小數位數:

>>> value = 10.01 
>>> int(round(value)) 
10 
>>> value = 10.55 
>>> int(round(value)) 
11 
1

鑄造爲int肯定是最簡單的方法。如果你是拼命保持它的浮動這裏是如何做到這一點禮貌亞歷克斯·馬爾泰利的:

print ('%f' % value).rstrip('0').rstrip('.') 
+0

有問題的答案是這樣的:http://stackoverflow.com/a/2440786/1872981 –

2

10.010是相同的float值。當你的值爲print時,你得到字符串10.0,因爲這是該值的默認字符串表示形式。 (通過調用str(10.0)可獲得相同的字符串。)

如果您想要一個非默認表示形式,則需要明確要求它。例如,使用format功能:

print format(rounded_value, '.0f') 

或者使用其他格式的方法:

print '{:.0f}'.format(rounded_value) 
print '%.0f' % (rounded_value,) 

爲什麼你要'.0f'Format Specification Mini-Language介紹的全部細節,但直覺:在f手段您需要定點格式(如10.0而不是1.0E2),而.0表示您不需要小數點後的數字(如10而不是10.0)。

同時,如果只有原因你round ed值是格式化...從來沒有這樣做。留在浮動的精度,然後修剪下來的格式:

print format(value, '.0f') 
+0

值得指出的是'round()'和'「.0f」'可以產生不同的結果,例如'' - 0.5'(不同的舍入規則)。 – jfs

+0

@ J.F.Sebastian:是的,我試圖在最後一段中澄清,但我認爲這不是很清楚。調用'round'將一個浮子繞到另一個浮子上; 'format'將浮點格式化爲一個字符串。當你指對方時使用任何一個也是錯誤的。有時候,你會想要做這兩件事(就像我最初的例子,我在'rounded_value'上調用'format')。 – abarnert

+0

是否有可能在舍入量中有一個動態值?例如'{0:。{1} f} .format(value,decimals_count)' – Tjorriemorrie

0

你會發現一個功能number_shaver(),削減在編輯this post 2尾號碼的零。

Another post在同一個線程中解釋了number_shaver()中的正則表達式是如何工作的。

幾天後我改進了another thread的正則表達式。