Discuss / Python / 交个作业提个问

交个作业提个问

Topic source

summons_M

#1 Created at ... [Delete] [Delete and Lock User]

贴出我的笨办法并请教大家一个问题:

# -*- coding: utf-8 -*-

from functools import reduce
def str2float(s):
    i=s[::-1].find('.')
    k=10**-i
    s=s.replace('.','')+'.'
    def str2num(s):
        return {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9,'.':k}[s]
    def cj(x,y):
        if isinstance(y,int):
            return 10*x+y
        else:
            return x*y
    return reduce(cj,map(str2num,s))

print('str2float(\'123.456\') =', str2float('123.456'))

为什么我输出'123.456'时候是正常的但是有些数字就会有问题 例如print(str2float('234444.678678687'))

234444.67867868702

stubble10

#2 Created at ... [Delete] [Delete and Lock User]

我也有这个问题,你这是什么原因啊?

逆北OB

#3 Created at ... [Delete] [Delete and Lock User]

应该是float类型的存储精度问题!


  • 1

Reply