繁体   English   中英

数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可以通过decimal.Decimal.as_tuple()返回的命名元组的exponent属性获得:

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

OP 在浮点数方面遇到了困难。 另外,当他们 state 时,回答这个问题有点尴尬

如果数字是 230 那么答案是 1

对于 1.0,它是 0.1

以下程序适用于许多浮点数输入:

import math
for g in [230, 1.0,.104, 1.23, 4.12345]:
    f = g
    sigdif = 0
    while 1:
        f = f - (int(math.ceil(f))-1)
        if f > 0.99999999999:
            break
        if f < 0.00000000001:
            break
        f = 10 * f
        sigdif = sigdif -1
    print(g,sigdif)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM