Discuss / Python / str2float

str2float

Topic source
    DIGITS = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
    L = list(s)
    cnt = 0
    reversedL = list(reversed(L))
    for x in reversedL:
        if x == '.':
            break
        else:
            cnt += 1
    L = [x for x in L if x in DIGITS]
    def str2int(s):
        def plus(x,y):
            return x*10+y
        def char2num(s):
            return DIGITS[s]
        return reduce(plus,map(char2num,s))
    return str2int(L)/(10**cnt)

有点绕,整体思路就是先判断小数点的位置在第几位小数,然后用列表生成器滤掉小数点,再把已过滤的字符串列表用已学知识转化为整数,最后用整数除以10**cnt,cnt就是之前得到的小数点的位置


  • 1

Reply