贴出我的笨办法并请教大家一个问题:
# -*- 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
我也有这个问题,你这是什么原因啊?
应该是float类型的存储精度问题!
Sign in to make a reply
summons_M
贴出我的笨办法并请教大家一个问题:
为什么我输出'123.456'时候是正常的但是有些数字就会有问题 例如print(str2float('234444.678678687'))