Discuss / Python / 只考虑带'小数点'的字符串

只考虑带'小数点'的字符串

Topic source

千年C

#1 Created at ... [Delete] [Delete and Lock User]
from functools import reduce

def str2float(s):
    def add(x,y):
        return x * 10 + y
    def char2num(ch):
        return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[ch]
    s_l,s_r = s.split('.')
    if s_l[0]=='-': s_l = s_l[1:]
    num_r = reduce(add,map(char2num,s_r))
    num_r = num_r * 0.1 ** len(s_r)
    num_l = reduce(add,map(char2num,s_l))
    if s[0]=='-':
        return -(num_r + num_l)
    else:
        return num_r + num_l

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

  • 1

Reply