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

时间:2019-11-06 16:14:43

标签: 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)

感谢任何会回答的人。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

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