python初学者练习:写一个程序,把字符号串转化为数字,例如“123”转为123,“0.254”转为0.254

---人生苦短,我用Python---
这道题乍一看挺简单,但是仔细一想,python提供了三种浮点值:内置的float与complex类型,以及标准库的decimal.Decimal类型。 
float类型存放双精度的浮点数,具体取值范围依赖于构建python的c编译器,由于精度受限,进行相等性比较不可靠。
若是小数,要保证输出的小数精度和原字符串精度一致,使用decimal类型进行操作则可满足要求。
代码如下:

from decimal import * # 引入decimal模块,控制浮点数精度

def change(str):

getcontext().prec = 100 # 这里可自由设置浮点数精度,默认是28位,可以设置更高
l = str.split('.') # 将字符串以小数点分割存入数组
if len(l) == 1: # 只有一个元素时,说明是整数
num = int(l[0])
if len(l) == 2: # 有两个元素时为小数, l[0]为整数部分,l[1]为小数部分
num = Decimal(l[0]) + Decimal(l[1])/Decimal(10 ** len(l[1])) #分别将两部分转化为数字类型再相加
return num


# 将以下字符串,传入上面的函数进行转换
str1 = '38.3385454457378347589723958920438609248509'  
str2 = '12687'
num1 = change(str1)
num2 = change(str2)
print(num1) # 输出为38.3385454457378347589723958920438609248509
print(num2) # 输出为12678

猜你喜欢

转载自www.cnblogs.com/cy80/p/9024917.html