MATLAB知识点:易错点:判断浮点数是否相等

​讲解视频:可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​

MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili


节选自第3章 3.4.3 关系运算

下面我们再来看一个易错点:

判断浮点数是否相等

先给大家简单介绍下什么是浮点数,浮点数是计算机科学中用于近似表示实数的一种数值表示法。简单来说,浮点数由两部分组成:一个表示数字的部分(称为尾数)和一个表示数字所在位置的指数。例如,数字1234.56可以写成1.23456×10^3,其中1.23456是尾数,3是指数。-2.7756\times10^{-17}

有编程基础的同学应该知道,计算机中的数据是使用二进制0和1来保存的,例如十进制表示的3在二进制中表示为11。虽然十进制能精确表示如0.1这样的数,但在二进制中,0.1却需要表示为一个无限循环的小数0.00011001100110011…。由于计算机的内存是有限的,这导致了它无法精确表示0.1这样的数值。计算机在处理这类数字时会进行截断或舍入,所以使用浮点数计算时可能会产生误差。

MATLAB中的浮点数分为两种,分别是双精度(double)浮点数和单精度(single)浮点数,两种浮点数能表示的数值的范围有所不同。默认情况下我们创建的向量或者矩阵中的元素都是使用双精度浮点数表示的,对这部分内容感兴趣的同学可点击下方链接,MATLAB的官网有详细介绍两种的区别:https://ww2.mathworks.cn/help/matlab/matlab_prog/floating-point-numbers.html。

大家可以尝试计算  0.5-0.4-0.1,这是我的MATLAB返回的结果:

理论上C应该等于0,但由于浮点数计算的误差,MATLAB得到的C约为-2.7756\times10^{-17},这是一个非常接近0的数。当我们试图判断C是否等于0时,MATLAB返回逻辑0,即MATLAB认为C不等于0,这显然不是我们期望的结果。

那么我们应该怎样判断两个浮点数相等呢?

解决方法:使用一个很小的正数来比较浮点数,而不是直接使用双等号(==)判断。我们将这个很小的正数称为容差(tolerance,简称为tol),例如要比较A和B两个数是否相等,只需要满足: \left | A-B \right | \le tol,这里的容差tol通常取一个非常小的正数,例如tol可取成1e-12(10的-12次方)。tol越小,判断两个浮点数相等的要求越严格。

当然,并非MATLAB中所有的浮点数计算都会出现误差。例如,如果我们仅交换0.1和0.4的位置:

总之,当我们需要判断两个浮点数是否相等时,务必要考虑到计算的误差。感兴趣的同学可以进一步搜索和学习有关浮点数的知识。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2774594.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

flask+pyinstaller实现mock接口,并打包到exe运行使用postman验证

flask代码 from flask import Flask, request, jsonifyapp Flask(__name__)app.route("/login", methods[POST]) def login():username request.json.get("username").strip() # 用户名password request.json.get("password").strip() # 密…

林浩然的趣味解读:赫伯特·亚历山大·西蒙的跨界智慧与伟大成就

林浩然的趣味解读:赫伯特亚历山大西蒙的跨界智慧与伟大成就 Lin Haoran’s Amusing Interpretation: Herbert Alexander Simon’s Interdisciplinary Wisdom and Great Achievements 林浩然,这位机智幽默且对知识充满好奇的探索者,最近在一次…

代码随想录算法训练营第二十四天 |回溯算法基础知识,77.组合(已补充)

回溯算法理论基础(已观看) 带你学透回溯算法(理论篇)| 回溯法精讲!_哔哩哔哩_bilibili #题目分类 什么是回溯法 溯法也可以叫做回溯搜索法,它是一种搜索的方式。 在二叉树系列中,我们已经不…

2022年通信工程师初级 实务 真题

文章目录 三、第3章 接入网,接入网的功能结构,无线频段及技术四、第4章 互联网,网络操作系统的功能,IP地址五、第6章 移动通信系统,FDD、TDD 三、第3章 接入网,接入网的功能结构,无线频段及技术…

numa网卡绑定

#概念 参考:https://www.jianshu.com/p/0f3b39a125eb(opens new window) chip:芯片,一个cpu芯片上可以包含多个cpu core,比如四核,表示一个chip里4个core。 socket:芯片插槽,颗,跟…

【Spring Boot】第二篇 自动装配原来就这么简单

导航 一. 什么是自动装配?二. 如何实现自动装配?1. 配置清单在哪里?2. 自动装配实现核心点1: 从META‐INF/spring.factories路径读取配置类清单核心点2: 过滤第一次过滤: 根据EnableAutoConfiguration注解中exclude和excludeName属性第二次过滤: 通过AutoConfigurationImpor…

Java实现网上药店系统 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 药品类型模块2.3 药品档案模块2.4 药品订单模块2.5 药品收藏模块2.6 药品资讯模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 角色表3.2.2 药品表3.2.3 药品订单表3.2.4 药品收藏表3.2.5 药品留言表…

【集合系列】LinkedHashMap 集合

LinkedHashMap集合 1. 概述2. 方法3. 遍历方式4. 代码示例5. 注意事项 其他集合类 祖父类 Map 父类 HashMap 集合类的遍历方式 具体信息请查看 API 帮助文档 1. 概述 LinkedHashMap 是 Java 中的一种特殊类型的 HashMap,它继承自 HashMap 类,并实现了…

免费:阿里云学生服务器领取申请(2024新版教程)

2024年阿里云学生服务器免费领取,先完成学生认证即可免费领取一台云服务器ECS,配置为2核2G、1M带宽、40G系统盘,在云服务器ECS实例过期之前,完成实验与认证任务,还可以免费续费6个月,阿里云百科aliyunbaike…

2023爱分析·大模型厂商全景报告|爱分析报告

01 研究范围定义 研究范围 大模型是指通过在海量数据上依托强大算力资源进行训练后能完成大量不同下游任务的模型。2023年以来,ChatGPT引爆全球大模型市场。国内众多大模型先后公测,众多互联网领军者投身大模型事业,使得大模型市场进入“百团…

Redis篇之过期淘汰策略

一、数据的过期策略 1.什么是过期策略 Redis对数据设置数据的有效时间,数据过期以后,就需要将数据从内存中删除掉。可以按照不同的规则进行删除,这种删除规则就被称之为数据的删除策略(数据过期策略)。 2.过期策略-惰…

【C语言自定义类型详解进阶】结构体(补充结构体的对齐和位段,一口气看完系列,央妈都点赞的博文)

目录 1.结构体 1.1 结构的基础知识 1.2 结构的声明 1.2.1特殊的声明(匿名结构体类型) 1.3结构体变量的定义 1.4关于匿名结构体类型的补充 1.5结构体的自引用 1.6结构体变量的初始化 2.结构体内存对齐(重点) 2.1偏移量补…

Redis篇之缓存雪崩

一、什么的缓存雪崩 缓存雪崩:在同一时间段大量的缓存key同时失效或者redis服务宕机,导致大量请求到达数据库给数据库带来巨大压力,可能导致数据库崩了。 二、应该怎么解决 1.给不同的Key的TTL添加随机值 2.利用Redis集群提高服务的可用性 3…

【人工智能】人工智能 – 引领未来科技的潮流

写在前面 引言红利挑战结论 引言 人工智能是指使计算机系统表现出类似于人类智能的能力。其目标是实现机器具备感知、理解、学习、推理和决策等智能行为。人工智能的发展可以追溯到上世纪50年代,随着计算机技术和算法的不断进步,人工智能得以实现。 今天…

QML中常见热区及层级结构

目录 引言层级结构默认层级结构z值作用范围遮罩实现-1的作用 热区嵌套与普通元素与其他热区与Flickable 事件透传总结 引言 热区有很多种,诸如MouseArea、DropArea、PinchArea等等,基本都是拦截对应的事件,允许开发者在事件函数对事件进行响…

米贸搜|Facebook在购物季使用的Meta广告投放流程

一、账户简化 当广告系列开始投放后,每个广告组都会经历一个初始的“机器学习阶段”。简化账户架构可以帮助AI系统更快获得广告主所需的成效。例如: 每周转化次数超过50次的广告组,其单次购物费用要低28%;成功结束机器学习阶段的…

图像处理入门:OpenCV的基础用法解析

图像处理入门:OpenCV的基础用法解析 引言OpenCV的初步了解深入理解OpenCV:计算机视觉的开源解决方案什么是OpenCV?OpenCV的主要功能1. 图像处理2. 图像分析3. 结构分析和形状描述4. 动态分析5. 三维重建6. 机器学习7. 目标检测 OpenCV的应用场…

嵌入式中轻松识别STM32单片机是否跑飞方法

单片机项目偶尔经常出现异常,不知道是程序跑飞了,还是进入某个死循环了? 因为发生概率比较低,也没有规律,所以没办法在线调试查找问题。 结合这个问题,给大家分享一下用ST-LINK Utility识别单片机程序是否…

Linux版Black Basta勒索病毒针对VMware ESXi服务器

前言 Black Basta勒索病毒是一款2022年新型的勒索病毒,最早于2022年4月被首次曝光,主要针对Windows系统进行攻击,虽然这款新型的勒索病毒黑客组织仅仅才出来短短两个多月的时间,就已经在其暗网平台上已经公布了几十个受害者之多&…

编译原理实验1——词法分析(python实现)

文章目录 实验目的实现定义单词对应的种别码定义输出形式:三元式python代码实现运行结果检错处理 总结 实验目的 输入一个C语言代码串,输出单词流,识别对象包含关键字、标识符、整型浮点型字符串型常数、科学计数法、操作符和标点、注释等等。…