# -*- coding: utf-8 -*-
from functools import reduce
def str2float(s):
"""
1.提取整数和小数
2.利用reduce和map 将提取出来的字符串按位变成int, 然后利用reduce 进行叠加<处理小数也同理>
"""
digits = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
def char2num(c): # 将字符串数字转成数字
return digits[c]
def fn(x, y): # 处理数字的乘积(包括整数和小数)
return x * 10 + y # NOTACK
intNum, floatNum = s.split('.')
intNum = reduce(fn, map(char2num, intNum))
# 小数部分的处理,例如0.45-->'45'-->45-->45* 10**(-len(小数部分的位数))
floatNum = 10 ** (-len(floatNum)) * reduce(fn, map(char2num, floatNum)) # NOTACK
return intNum + floatNum
str2float('0.45')
自定义字符串转浮点数
最新推荐文章于 2024-07-06 13:13:33 发布