首先,你的代碼有問題。如果我把你的代碼並運行此:
print(your_trim(1.1))
print(your_trim(1.0566))
print(your_trim('1cm'))
輸出是:
1.1
1 <-- this is dangerous, the value is 1.0566!
1cm <-- this is not even a number
正如評論者提到的,你可能會不匹配浮點數和整數。顧名思義,integer
沒有小數位。如果你的目標IST剝去尾隨零(無論何種原因),並不一輪float
到int
,你可能會使用這樣的方法:
def strip_trailing_zeroes(num):
if isinstance(num, float):
if int(num) == num:
return int(num)
else:
return num
else:
raise ValueError("Parameter is not a float")
測試代碼:
print(strip_trailing_zeroes(1.1))
print(strip_trailing_zeroes(1.0566))
print(strip_trailing_zeroes(1.000))
print(strip_trailing_zeroes('1cm'))
返回輸出:
1.1
1.0566
1
Exception with "ValueError: Parameter is not a float"
正如其他評論者所說,我無法想象這是一個用例。
你可能可能後,是從一個「浮動的字符串表示」修剪尾隨零。爲此,一個簡單的正則表達式替換就足夠了:
# match a decimal point, followed by one or more zeros
# followed by the end of the input
print(re.sub('\.0+$', '', '2.000'))
你的問題沒有意義。 2.000與2.0相同。你談論「從整數後面跟隨小數位」,但整數沒有小數位。 – wim
有沒有這樣的設施與內部表示。可變小數位僅存在於字符串表示中,例如打印該值時。這是一個字符串格式化的問題,您可以通過簡單的搜索找到它。 – Prune