计算Python中数字最后一位的顺序

计算Python中数字最后一位的顺序,python,algorithm,logic,digits,Python,Algorithm,Logic,Digits,大家好, 我正试图用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) 感谢所有愿意回答的人。

大家好, 我正试图用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)
感谢所有愿意回答的人。

您可以使用来获取小数位数,并计算最后一位数字的顺序为
1e^x
x
可以通过
decimal.decimal.as_tuple()
返回的命名元组的
指数
属性获得:



看来你的代码的第一部分工作正常,所以我没有碰它

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'])

我认为将其作为字符串处理会更容易这是否回答了您的问题?太多了!它看起来也很容易,对你来说也很容易。但我想知道那个代码是什么意思。。。我该怎么做?
order_last_digit(230) #10^0=1
# 1

order_last_digit(0.104) #10^-3
# 0.001

order_last_digit(1.0)
# 0.1
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'])