练习三
Topic sourceelif s.find('.')==0: 不太明白这一段考虑的是什么情况 运行了这段代码有些异常:
str2float('0.44') 0.44000000000000006
小数位为重复数字的时候输出有误
elif s.find('.')==0: 是指输入的如果是'.23'这样的数字
str2float('0.44') 0.44000000000000006 这样的显示是浮点数在计算机中的存储本身就是不准确造成的
- 1
elif s.find('.')==0: 不太明白这一段考虑的是什么情况 运行了这段代码有些异常:
str2float('0.44') 0.44000000000000006
小数位为重复数字的时候输出有误
elif s.find('.')==0: 是指输入的如果是'.23'这样的数字
str2float('0.44') 0.44000000000000006 这样的显示是浮点数在计算机中的存储本身就是不准确造成的
做自己别人都是浮云
from functools import reduce def str2float(s): L=s.split('.')
def char2num(s): return {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}[s] def fun1(x,y): return x*10+y def fun2(x,y): return x/10+y if s.find('.')==-1: return reduce(fun1,map(char2num,L[0])) elif s.find('.')==0: return reduce(fun2,map(char2num,L[1][::-1]))/10 else: return reduce(fun1,map(char2num,L[0]))+reduce(fun2,map(char2num,L[1][::-1]))/10