from functools import reduce
DIGITS = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
def str2float(s):
if (len(s)>0) and ('.' in s):
num1=reduce(str2Up,map(char2num,s[:s.find('.')]))
ss=s[::-1]
num2=reduce(str2Down,map(char2num,ss[:ss.find('.')]))
return num1+num2*0.1
def char2num(s):
return DIGITS[s]
def str2Up(x,y):
return x*10+y
def str2Down(x,y):
return x*0.1+y
print('str2float(\'123.456\') =', str2float('123.456'))
Sign in to make a reply
琳小果不爱吃胡萝卜
from functools import reduce
DIGITS = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
def str2float(s):
if (len(s)>0) and ('.' in s):
num1=reduce(str2Up,map(char2num,s[:s.find('.')]))
ss=s[::-1]
num2=reduce(str2Down,map(char2num,ss[:ss.find('.')]))
return num1+num2*0.1
def char2num(s):
return DIGITS[s]
def str2Up(x,y):
return x*10+y
def str2Down(x,y):
return x*0.1+y
print('str2float(\'123.456\') =', str2float('123.456'))