python str类型科学计数法转换成int或float类型

问题描述

  • 该文章所说,一个长一点的数字如‘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'))
  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值