2016-03-20 132 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

是的,这有效。这是正确的答案。只要你的选票被标记为正确答案,我就可以删除我的选票,直到选票改变他的选票。 –

相关问题