from functools import reduce
# 将数字字符串转成浮点型或整型数
def str2Float(testStr):
pointIndex = -1
for index,ch in enumerate(testStr):
if ch == '.':
pointIndex = index
#计算浮点数
def pointCal(x, y):
return x * 10 + y
if pointIndex > 0:
pointLeftArray = list(map(int,testStr[0:pointIndex]))
pointRightArray = list(map(int, testStr[pointIndex+1:]))
# 10 ** 3 表示 10 的3次方 10**3 = 10*10*10 = 1000
result = reduce(pointCal, pointLeftArray) + reduce(pointCal, pointRightArray)/(10**len(pointRightArray))
return result
else:
array = list(map(int, testStr))
return reduce(pointCal, array)
print('\'1239043.456098\' to int =', str2Float('1239043.456098'))