【python浮点数陷阱】教程文章相关的互联网学习教程文章

如何在Python中将浮点数格式化为最大固定宽度【代码】

我正在将一个输入文件写入一个源于60年代的程序,它从文本文件的固定宽度数据字段读取数据.格式为: >字段宽度为8个字符>浮点数必须包含’.’或以指数格式书写,例如’1.23e8′ 我最接近的是print "{0:8.3g}".format(number)产生’1.23e 06’与1234567,和’1234’与1234. 我想调整一下,得到 >’1234567.’使用1234567(即在它之前不会采用指数格式)需要),>’1234.’ 1234(即以点结尾,因此不会被解释为整数),>’1.235e 7’与12345678(即...

python – 连接pandas数据帧时整数成为浮点数【代码】

我有2个pandas数据帧: df1是一个空数据帧:将pandas导入为pd导入numpy为npdf1 = pd.DataFrame(columns=['Start','End','Duration'])df1 Out[1]: Empty DataFrame Columns: [Start, End, Duration] Index: []df2包含:df2 = pd.DataFrame(np.array([None] * 3).reshape(-1,3),columns=['Start','End','Duration']) df2['Start'] = 483 df2['End'] = 523 df2['Duration'] = 0.8df2 Out[2]: Start End Duration0 483 523 ...

如何在python中没有任何截断的情况下打印浮点数?【代码】

我有一些数字0.0000002345E ^ -60.我想按原样打印浮点值.这样做的方法是什么?print%f将其截断为6位数.同样%n.nf给出固定数字.没有截断的打印方式是什么.解决方法:像这样?>>> print('{:.100f}'.format(0.0000002345E-60)) 0.0000000000000000000000000000000000000000000000000000000000000000002344999999999999860343602938602754正如您可能从输出中注意到的那样,并不是很清楚您想要如何做到这一点.由于浮动表示,您将失去精确...

python – 将pandas数据帧保存为32位浮点数【代码】

我在pandas中有一些数据,我试图保存为32位浮点数,但我总是得到64位浮点数.我最好的尝试是这样的:df['store'] = pd.DataFrame(data).astype(float32) 但它不起作用..任何想法?解决方法:使用numpy.float32:In [320]: import numpy as np import pandas as pd df = pd.DataFrame({'a':np.random.randn(10)}) df.info()<class 'pandas.core.frame.DataFrame'> Int64Index: 10 entries, 0 to 9 Data columns (total 1 columns): a ...

python – 为什么圆整上ndigits = None为整数而不是浮点数?【代码】

当ndigits显式设置为None时,为什么round()对int和float的行为不同? Python 3.5.1中的控制台测试:>>> round(1, None) Traceback (most recent call last):File "<stdin>", line 1, in <module> TypeError: 'NoneType' object cannot be interpreted as an integer >>> round(1.0, None) 1更新: 我将此报告为已修复并关闭的错误(Issue #27936).@PadraicCunningham和@CraigBurgler都是对的. 该修复程序包含在以下最终版本中: > Py...

非线性方程求解Sympy Python用于液压 – 需要解决TypeError(“无法将表达式转换为浮点数”)【代码】

我正在尝试编写一段python脚本,以便在土木工程中出现的某些液压问题中自动执行相当耗时的任务. 等式来自Colebrook-White,如下: 我写了以下代码:from math import * from sympy import *e = 0.2 d = 0.2 v = 0.00000131 q = 10 s = ( pi * d ** 2 ) / 4 u = q / s re = u * d / vlamb = symbols( 'lamb' )solve( 1 / sqrt( lamb ) + 2 * log10( e / ( 3.7 * d ) ...

Python并从excel文件导入浮点数【代码】

所以我有一个看起来像这样的excel文件Name R s l2 max_amplitude ref_amplitudeR_0.3_s_0.5_l2_0.1 0.3 0.5 0.1 1.45131445 1.45131445R_0.3_s_0.5_l2_0.6 0.3 0.5 0.6 3.52145743 3.52145743...R_1.1_s_2.0_l2_1.6 1.1 2.0 1.6 5.07415199 5.07415199R_1.1_s_2.0_l2_2.1 1.1 2.0 2.1 5.78820419 5.78820419R_1.1_s_2.0_l2_2.6 1.1 2.0 2.6 5.84488964 5.84488964R_1.1_s_2.0_l2_3.1 1.1 2.0 3.1 6.35387516 ...

python – 计算列表中字符串或浮点数的频率【代码】

我有一份清单.它非常大.它有超过100万条目.我想计算每个字符串的频率.它将数字存储为1到1000之间的字符串.我使用了以下内容,但它会持续运行数小时:d = {b:a.count(b) for b in a} n, m = d.keys(), d.values() print n, m解决方法:使用collections.Counter代替:from collections import Counter d = Counter(a)n, m = d.keys(), d.values() print n, m

如何从两个范围中获取一个随机浮点数(python)【代码】

我需要在python中选择两个范围内的随机浮点数:0. < n < 0.2 or 0.8 < n < 1.现在我只有一个范围:random.uniform(0, 0.2)整行(我映射暖色hsv值):couleur = hsv2rgb(random.uniform(0, 0.2), 1, 1))如果有人可以帮忙……!解决方法:您可以在间隔之间进行加权选择:from numpy import randomdef uniform_two(a1, a2, b1, b2):# Calc weight for each rangedelta_a = a2 - a1delta_b = b2 - b1if random.rand() < delta_a / (delt...

python – 为什么我不能解压缩其他类型的浮点数并获得预期的结果?【代码】

我正在尝试解析包含在这个二进制文件中的一些数据,Python的struct模块导致了各种各样的问题.当它尝试一次执行多个类型时,它似乎不会给我正确的float变量:import struct# a fragment of the binary file a = '\x39\x00\xFF\x00\x00\x0A\x00\x1F\x05\xDC\x42\x31\x30\x00\xFF\x00\x00\x0A\x00\xB5\x01\xE6\x42'struct.unpack_from('1sxHxbxf', a) # returns ('9', 255, 10, 2.8355782166755716e-09), but struct.unpack_from('f',a...

python – pandas iterrows将int更改为浮点数【代码】

我正在尝试迭代包含一些int64和一些浮点数的DataFrame的行. iterrows()似乎将我的intts变成了浮点数,这打破了我想要下游的一切:>>> import pandas as pd >>> df = pd.DataFrame([[10000000000000001, 1.5], [10000000000000002, 2.5]], columns=['id', 'prc']) >>> [id for id in df.id] [10000000000000001, 10000000000000002] >>> [r['id'] for (idx,r) in df.iterrows()] [10000000000000000.0, 10000000000000002.0]直接在df...

python – pd.read_csv默认情况下处理像浮点数这样的整数【代码】

我有一个看起来像csv(headers =第一行):name,a,a1,b,b1 arnold,300311,arnld01,300311,arnld01 sam,300713,sam01,300713,sam01当我跑:df = pd.read_csv('file.csv')列a和b的末尾附有.0,如下所示:df.head()name,a,a1,b,b1 arnold,300311.0,arnld01,300311.0,arnld01 sam,300713.0,sam01,300713.0,sam01列a和b是整数或空格,那么为什么pd.read_csv()将它们视为浮点数,如何确保它们在读取时是整数?解决方法:正如评论中提到的root,这...

Python123 获得用户输入的一个数字,可能是浮点数或复数,如果是整数仅接收十进制形式,且只能是数字。对输入数字进行平方运算,输出结果。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬【代码】

题目:获得用户输入的一个数字,可能是浮点数或复数,如果是整数仅接收十进制形式,且只能是数字。对输入数字进行平方运算,输出结果。???????????????????????????????????????????????????????????????????????????????????????????????? 要求:???????????????????????????????????????????????????????????????????????????????????????????????? (1)无论用户输入何种内容,程序无错误;???????????????????????????????????...

python – 使用(numpy)浮点数时Sympy的结果不正确【代码】

我试图从时间相关的旋转矩阵RE(t)(即纬度48.3的地球自转)计算velocity tensor.这是通过确定偏斜对称矩阵SE(t)= dRE(t)/ dt * RE.T来实现的.使用float而不是Sympy表达式时,我得到的结果不正确,如下例所示:from IPython.display import display import sympy as sysy.init_printing() # LaTeX like pretty printing for IPythondef mk_rotmatrix(alpha, coord_ax="x"):""" Rotation matrix around coordinate axis """ca, sa = sy....