Python 尝试将浮点转换为十进制

Python 尝试将浮点转换为十进制,python,python-3.x,Python,Python 3.x,这是公式, 3.14=3*10^0+1*10^-1+4*10^-2=3.14 但是我使用的是下面的python脚本,它一直在计算3.55的结果,有人能帮我吗 n=0 m='3.14'.split('.') for i in m: if i == m[0]: f= (int(i,base=10)) else: for x in i: for v in range(len(i)): n+=

这是公式, 3.14=3*10^0+1*10^-1+4*10^-2=3.14

但是我使用的是下面的python脚本,它一直在计算3.55的结果,有人能帮我吗

n=0
m='3.14'.split('.')
for i in m:
    if i == m[0]:
        f= (int(i,base=10))
    else:
        for x in i:
            for v in range(len(i)):
                    n+=10**(-v-1)*int(x)
print (float(f+n))

你的最后两个循环,在同一件事情上循环两次,也就是说,你做了1*10^-1+4*10^-1+1*10^-2+4*10^-2,导致了.55

你应该写:

n=0
m='3.14'.split('.')
for i in m:
    if i == m[0]:
        f= (int(i,base=10))
    else:
        v=0
        for x in i:
          n+=10**(-v-1)*int(x)
          v=v+1
print (float(f+n))

但是你有内置的函数来为你做所有这些,问题是你不想把m的值转换成float;相反,您尝试使用拆分方法,但在这里没有合理的用途, 取而代之的是,尝试将m转换为float,然后使用公式和for循环

万一你不知道怎么投 m=浮动'3.14'


标题是从浮点到小数,但您的示例显示的是从字符串到浮点…您实际上想要实现什么?非常感谢!我可以问一下我可以使用哪些内置函数吗?正如上面所建议的,只使用float3.14,但我发现有趣的是,您还可以查看代码中的错误