计算 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^x
,x
可以通过[=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'])
大家好, 我正在尝试用 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^x
,x
可以通过[=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'])