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

Хммм ... на «последние две цифры» вы имеете в виду, что последние 2 цифры 1013.145 бы 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

Да, это работает. Это правильный ответ. Удаление моего, как только ваш будет помечен как правильный ответ, поскольку я не могу, пока OP не изменит свой голос. –

Смежные вопросы