2016-03-20 131 views
1

我需要獲取整數和小數的最後2位數。如何獲取數字的最後2位數(整數或小數)

我使用number%100運算符來獲取整數的最後2位數。但是,當我在小數點上嘗試相同時出現錯誤。

有沒有簡單的方法來做到這一點,而無需轉換爲字符串和解析?

例子:

number = 1234.56789 

我需要得到89

56789 % 100 = 89 

1234.56789 % 100給出了錯誤:

ValueError: invalid literal for int() with base 10 

更多的例子:

number = 0.1 

我需要得到0.1(帶小數)。

+0

嗯......通過「最後兩位數字」你的意思是的1013.145最後2個位數會13?還是45? –

+0

你知道有多少數字會超過小數嗎?或者可能超過小數的最大值? –

+0

當數字是['0.1 + 0.2']時,最後兩位數字是什麼?(http://stackoverflow.com/questions/588004/is-floating-point-math-broken)? _(注意:表達式是鏈接)._它會是'30'還是'04'? –

回答

4

這裏是一個可行的解決方案,您的問題:

def last_2_digits_at_best(n): 
    return float(str(n)[-3:]) if '.' in str(n)[-2:] else int(str(n)[-2:]) 

print last_2_digits_at_best(1234.56789) 
print last_2_digits_at_best(123) 
print last_2_digits_at_best(0.1) 
print last_2_digits_at_best(1) 
print last_2_digits_at_best(0.1 + 0.2) 

輸出:

89 
23 
0.1 
1 
0.3 
4.5 
1.4 
+0

是的,這有效。這是正確的答案。只要你的選票被標記爲正確答案,我就可以刪除我的選票,直到選票改變他的選票。 –

相關問題