大家好, 我正在尝试使用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)
感谢任何会回答的人。
答案 0 :(得分:2)
您可以使用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
答案 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'])