百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

测开不得不会的python浮点数计算精度问题

off999 2024-12-14 14:26 30 浏览 0 评论

python的浮点数介绍

浮点数简单讲就是数学中的小数,比如+0.1,-0.1,也可以通过float()函数定义。

但是在实际使用中经常会遇到加减乘除或者四舍五入后精度失真的问题,会导致计算结果不准确。通常使用自带的decimal模块,通过构建decimal.Decimal对象,解决浮点数计算精度失真的问题。

加减法运算遇到精度问题

float_num2 = 1.09 - 0.1
print(float_num2)
打印结果:
0.9900000000000001

结果并不是我们想要的0.99,而是在后面增加了很多小数位。

通过round()函数实现四舍五入时也会遇到类似精度问题

print(round(2.675,2))

打印结果返回的是2.67,并不是2.68


以上精度问题其实都是跟计算机的二进制机制有关系(IEEE 7.4标准是IEEE浮点数标准,定义了一种由32位或64位字表示的浮点数格式。由于IEEE 7.4标准中定义的浮点数格式是有限的,因此无法精确表示所有的小数值。

使用decimal模块解决计算精度问题

引入Deciaml

from decimal import Decimal

Decimal要求传入字符串,计算结果如下:

print(f"计算结果: {Decimal('1.09') - Decimal('0.1')}")
计算结果: 0.99
#以上结果确实是我们想要的结果

通过Decimal.from_float看计算机上实际存在的浮点值

print(Decimal.from_float(1.09-0.1))
打印结果如下:小数点后面有53位数字
0.99000000000000010214051826551440171897411346435546875

使用decimal模块解决四舍五入精度问题

使用uantize函数实现四舍五入,传入的0.00表示精确到小数点2位,以此类推。q

print(Decimal('2.675').quantize(Decimal("0.00")))
打印结果为2.68,正是我们想要的精度。


使用float('inf')和float('-inf')表示正无穷和负无穷

print(float('inf') > 99999999999999999999999)
print(float('-inf') < -99999999999999999999999)

打印结果都为True


共勉: 东汉·班固《汉书·枚乘传》:“泰山之管穿石,单极之绠断干。水非石之钻,索非木之锯,渐靡使之然也。”

-----指水滴不断地滴,可以滴穿石头;

-----比喻坚持不懈,集细微的力量也能成就难能的功劳。

----感谢读者的阅读和学习,谢谢大家。

相关推荐

playstore(playstore app install english)

原文:PlayStore翻译:谷歌的电子市场,或者是指一些虚拟的电子商城。例句:Playstore,restaurant,oricecreamstandtogether.情景游戏...

office2010不激活可以用吗(window10中office不激活可以吗)

可以购买正版授权码激活或激活工具,不激活也可以一直用,但是每一次打开都会弹框。可以使用。因为Office2010不激活后,只会出现一个提醒框,并不影响软件的正常使用。但是未激活的Office2010不...

雨林木风在线重装系统(雨林木风系统安装教程win10)

一,一般雨林木风番茄花园之类的盗版系统重装系统后都是自动激活的,不需要再重新激活。二,如果偶尔系统提示没有激活的话,上系统之家等网站可以下载激活码,按提示激活即可。三,不建议安装雨林木风之类的盗版系统...

系统镜像文件放在哪里(系统镜像文件放在哪里好)

镜像文件路径在安装的U盘内有显示,如果没有显示,那是文件不对,或被解压了。镜像文件是一些压缩文件的统称。常见的有img格式的文件(例如,文本文件的格式是txt),它通常是用特定的软件,将本身自带启动文...

mtu设置多少最好(mtu设置多少最好 4g)

路由器MTU的设置应根据网络情况决定,各种网络环境建议使用的MTU值如下:1.1500—以太网信息包最大值,也是默认值,是没有PPPoE和虚拟专用网络的网络连接的典型设置。是大部分路由器,网络适配器和...

u盘最便宜多少钱一个(u盘最低价格)

一般情况下,一分钱,一分货;没有又便宜,货又好的事情。1、扩容盘。扩容盘是用PC技术,在量产时运用容量优先,输入了固定的容量,但它真实的容量只有标称容量的10倍左右。512M没人要的U盘扩容成4G,它...

小白三步装机教程(小白三步装机法)

下面给大家整理了一份小白装机的详细教程,有需要的朋友们快来看看吧!1、我们下载一个小白软件,然后选择了安装win7系统。2、在下载界面,下载速度取决于您的网络您只需要耐心等待即可。3、软件下载完成后会...

winpe下载官网下载iso(winpe.iso下载)

你好,以winpe装win7iso系统说明安装步骤:  1、根据教程制作好winpe启动盘,然后将下载的win7iso系统文件直接复制到U盘的GHO目录下;  2、在需要装系统的电脑上...

把系统装在u盘(把系统装在u盘里的缺点)

系统装进U盘有效的方法。1、下载并且安装好大白菜装机版,打开安装好的大白菜装机版,插入u盘等待软件成功读取到u盘之后,点击“一键制作启动u盘”进入下一步操作:2、弹出的信息提示窗口中,选择自己下载的的...

恢复出厂设置对电脑有影响吗

电脑恢复出厂设置,对系统没有影响,原因如下:1、系统还原是电脑在使用中的一种正常运作,不还原电脑无法正常运行,系统还原是对电脑的维护,不会对电脑或系统造成损害。2、系统还原是一次大容量的数据读写、清除...

注册邮箱163免费登录入口官网

注册网易邮箱账号步骤如下:1、在浏览器的地址栏输入http://email.163.com/进入网易邮箱的登录页面,点击页面下方的立即注册2、点击立即注册进入邮箱的注册页面,点击页面上面的注册字母邮箱...

产品密钥win10专业版激活密钥免费

1不存在永久激活密钥,但可以使用一些有效期长的密钥去激活Win10专业版。2Windows10的激活方式是基于数字权利,当你购买Windows10时,系统会将您电脑的硬件信息和购买记录绑定在一起...

ghostxp系统下载怎么安装教程

系统之家下载的XP系统通常是一个ISO镜像文件,安装这个系统需要通过一些步骤来制作可启动安装介质并进行系统安装。以下是安装的基本步骤:准备安装介质:使用工具如Rufus或AnyBurn将下载的ISO文...

无线网桥监控安装方法(无线网桥怎么连接监控)

网桥连接无线路由器安装的设置方法如下1.主路由器上网正常,副路由器LAN口插一根网线,另一头连接电脑。主副路由器不需要用网线连接。2.电脑开机输入副路由器背面的设置地址,进入登录界面输入背面的账号密码...

怎么对电脑文件夹加密(怎么对电脑文件夹加密码)

1.右键点要加密的文件或文件夹,然后单击“属性”;2.在“常规”选项卡,点击“高级”。选中“加密内容以便保护数据”复选框;3.在加密文件夹时,系统将询问是否要同时加密它的子文件夹。要如果选择是,那它的...

取消回复欢迎 发表评论: