问题描述
- 如该文章所说,一个长一点的数字如‘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'))

本文介绍了一种将科学计数法表示的字符串转换为浮点数或整数的方法,通过自定义函数解决了从文本文件读取科学计数法表示数值后的类型转换问题,并提供了四舍五入和小数点后保留位数的技巧。
305

被折叠的 条评论
为什么被折叠?



