自定义字符串转浮点数

# -*- 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')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值