相关文章推荐
坚韧的丝瓜  ·  springboot集成liquibase, ...·  11 月前    · 
面冷心慈的熊猫  ·  selenium ...·  2 年前    · 
高兴的硬币  ·  2021-10-18 bin/hive ...·  2 年前    · 

之前由于需要读取一些数据集里的信息,而这些信息是存为txt文件,读取之后是字符串。数据本来全部都是数字。只不过用科学计数法表示的,使用int,float强转会报错。在网上稍微查了一下,也没找到啥好办法。后来,刚好看到一本书,提到了一个函数。转化起来很简单。

eval('1.23456789e+5')
123456.789

法二(刚开始的笨做法)

按照科学计数法的格式进行字符串分割,分成底数和指数部分,变为数字后再相乘。

def str2num(string):
    try:
        # 如果是按照科学计数法记录的字符串
        temp = string.split('+')
        base, index = temp[0], temp[1]
        base = base.split('e')[0]
        return float(base)*(10**int(index))
    except:
        # 如果不是科学计数法记录的,而是直接记的数,如100这样偶尔出现的不规范数据
        return float(string)
                    python将科学计数法型数字的字符串转化为数字前言法一法二(刚开始的笨做法)前言之前由于需要读取一些数据集里的信息,而这些信息是存为txt文件,读取之后是字符串。数据本来全部都是数字。只不过用科学计数法表示的,使用int,float强转会报错。在网上稍微查了一下,也没找到啥好办法。后来,刚好看到一本书,提到了一个函数。转化起来很简单。法一eval('1.23456789e+5')输出:...
				
科学计数法使用e标识数值,将科学计算学转化数字的思路:按e右边的数字移动小数点位数。e右边的数字如果是负数,则向左移动小数点。示例如下: 1.2345678e2 = 123.45678 1.2345678e-2 = 0.012345678 1.7615562e+06 = 1761556.2 1.87982e7 = 18798200 1e3 = 1000 那么在shell中,如何转化科学计数法数字呢,方法如下:这里以”1.7615562e+06″ (或者1.7615562e6)为示例: [root@kevin ~]# echo 1.7615562e6| gawk '$1=strto
读取csv时遇到一个长数字(比较长的数字,excel中长度超过16位后,会变成科学计数法显示)转换问题。在csv中正常显示全部数字,没有变成科学计数法,但用pd.read_csv后就变成了科学计数法显示, 如下图显示。这是个问题,当然要解决呀呀呀。 搜索了许多网页,找到一篇文章可以解决这个问题: https://www.jb51.net/article/164692.htm (见文章【 4、使用csv读写csv文件示例代码】) import csv csvFile = open('5000 Sales Records.csv','r') reader = csv.reader(csvFil
print ("%e" %number)可以将number输出为科学计数法 这里的 number 是要转换的数字或者变量 同理,也可以把科学记数法转化为十进制整数:print ("%d" %number) 同理,二进制,八进制,十六进制也是一样的 当然浮点的也可以。 print ("%e"%1010) 1.010000e+03
猜测python应该是有现成的模块可以解决该问题,不过没找到,所以自己简单写了个函数处理: def tranform(inputString):   num_value = re.compile('^[0-9.]+([*|x][0-9]+)+[E|e|^][+-]?[0-9]+$')   result = num_value.match(inputString)   if resul...
求助 Python怎么把接收的数据自动把科学计数法形式转换成普通数字形式,,我上网查了一些 说是在前面加上import numpy as np np.set_printoptions(suppress=True) 可是放在我的代码里并不管用啊