我想將python中的浮點數圓整爲零小數位。python round留下尾部0
但是,循環方法每次都會留下尾部0。
value = 10.01
rounded_value = round(value)
print rounded_value
結果10.0,但我想10
如何才能實現這一目標?轉換爲int?
我想將python中的浮點數圓整爲零小數位。python round留下尾部0
但是,循環方法每次都會留下尾部0。
value = 10.01
rounded_value = round(value)
print rounded_value
結果10.0,但我想10
如何才能實現這一目標?轉換爲int?
傳遞圓潤價值int()
擺脫的小數位數:
>>> value = 10.01
>>> int(round(value))
10
>>> value = 10.55
>>> int(round(value))
11
鑄造爲int肯定是最簡單的方法。如果你是拼命保持它的浮動這裏是如何做到這一點禮貌亞歷克斯·馬爾泰利的:
print ('%f' % value).rstrip('0').rstrip('.')
有問題的答案是這樣的:http://stackoverflow.com/a/2440786/1872981 –
10.0
和10
是相同的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')
值得指出的是'round()'和'「.0f」'可以產生不同的結果,例如'' - 0.5'(不同的舍入規則)。 – jfs
@ J.F.Sebastian:是的,我試圖在最後一段中澄清,但我認爲這不是很清楚。調用'round'將一個浮子繞到另一個浮子上; 'format'將浮點格式化爲一個字符串。當你指對方時使用任何一個也是錯誤的。有時候,你會想要做這兩件事(就像我最初的例子,我在'rounded_value'上調用'format')。 – abarnert
是否有可能在舍入量中有一個動態值?例如'{0:。{1} f} .format(value,decimals_count)' – Tjorriemorrie
你會發現一個功能number_shaver()
,削減在編輯this post 2尾號碼的零。
Another post在同一個線程中解釋了number_shaver()
中的正則表達式是如何工作的。
幾天後我改進了another thread的正則表達式。
取消那個笨蛋;那裏的答案也會在這裏工作,但這更像是一個愉快的巧合。 –