问题描述
- 如该文章所说,一个长一点的数字如‘0.000003’转换成str类型时候变成科学计数法表示。
- 所以当从txt或者xml文档中读出一个科学计数法表示的str字符串,没有一个直接可用的方法转换回我们需要的数字类型。
- 找了一下网上好像没有这样的函数,所以我自己写一个,目的是把str类型科学计数法转换成int或float类型
函数:
import math
def fun(str_num):
before_e = float(str_num.split('e')[0])
sign = str_num.split('e')[1][:1]
after_e = int(str_num.split('e')[1][1:])
if sign == '+':
float_num = before_e * math.pow(10, after_e)
elif sign == '-':
float_num = before_e * math.pow(10, -after_e)
else:
float_num = None
print('error: unknown sign')
return float_num
例子:
输入:
print(fun('2.239035e+05'))
print(fun('1.596312e-02'))
print(fun('-7.829694e+01'))
print(fun('-1.755057e-02'))
输出:
223903.5
0.01596312
-78.29694
-0.01755057
改进:
可以根据需要转换成int型, 四舍五入
int_num = int(round(float_num))
分享一个指定小数点数量四舍五入的方法(示例是2位小数)
from decimal import Decimal
float_num= Decimal(float_num).quantize(Decimal('0.00'))