Подсчитать порядок последней цифры числа в Python - PullRequest
1 голос
/ 06 ноября 2019

Привет всем, я пытаюсь написать программу на Python, которая сообщает мне порядок последней цифры числа: например, если число равно 230, то ответ равен 1, для 0,104 это 0,001, для 1,0это 0,1 и так далее ... Я пытался написать что-то, но это делает странные вещи для чисел с плавающей запятой: это примерно подходит для чисел, которые не заканчиваются на 0, и это неправильно для тех, кто заканчивается на 0. Эточто я написал:

def digit(x):
if (x-int(x))==0:
    return 1
else:
    return 0.1*digit(x*10)

Спасибо всем, кто ответит.

Ответы [ 2 ]

2 голосов
/ 06 ноября 2019

Вы можете использовать decimal.Decimal, чтобы получить количество десятичных разрядов, и вычислить порядок последней цифры, как 1e^x, x можно получить с помощью атрибута exponentименованный кортеж, возвращаемый decimal.Decimal.as_tuple():

import decimal

def order_last_digit(d):
    dec = decimal.Decimal(str(d))
    return 10**dec.as_tuple().exponent

order_last_digit(230) #10^0=1
# 1

order_last_digit(0.104) #10^-3
# 0.001

order_last_digit(1.0)
# 0.1
0 голосов
/ 06 ноября 2019

кажется, что первая часть вашего кода работает правильно, поэтому я не трогал его.

def digit(x):
  if (x-int(x))==0:
    return 1
  else:
    return '0.'+''.join(['0' for i in str(x).split('.')[1][0:-1]]+['1'])
...