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

Count the order of the last digit of a number in Python

大家好, 我正在尝试用 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)

感谢任何愿意回答的人。

可以用decimal.Decimal获取小数位数,计算最后一位的顺序为1e^xx可以通过[=15=获取] 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

您的代码的第一部分似乎工作正常,所以我没有碰它。

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