当前位置: 首页 > news >正文

浮点数的相等性判断

在编程中,浮点数(如 C/C++ 中的float、double,Python 中的float)的赋值和相等性判断需要特别注意。

因为浮点数在计算机中是近似表示的,直接使用==判断相等可能导致逻辑错误。

一、浮点数的相等性判断

禁止直接使用== 或===判断两个浮点数是否相等,因为精度误差会导致意外结果。

#include <stdio.h>int main() 
{float a = 0.1f + 0.2f;float b = 0.3f;printf("a = %f, b = %f\n", a, b); // 输出可能为 a=0.300000, b=0.300000printf("a == b ? %d\n", a == b);  // 实际输出 0(不相等)!return 0;
}

原因:
0.1 + 0.2的计算结果因二进制精度误差,实际存储值为0.3000000119,而0.3的存储值为0.2999999821,两者并不完全相等,导致==判断失败。

二、正确的判断方法:比较差值是否小于阈值

判断两个浮点数是否 “足够接近”(在可接受的误差范围内),而非完全相等。步骤:

  • 计算两个浮点数的绝对差值。
  • 判断差值是否小于一个极小的阈值(如1e-6,根据精度需求调整)。
#include <stdio.h>int main() 
{float a = 0.1f + 0.2f;float b = 0.3f;printf("a = %f, b = %f\n", a, b); // 输出可能为 a=0.300000, b=0.300000if(a - b <= 0.0001){printf("a = b \n");}else{printf("a != b \n");}return 0;
}
http://www.rkmt.cn/news/19368.html

相关文章:

  • ubuntu18
  • FFmpeg开发笔记(八十二)使用国产直播服务器smart_rtmpd执行推流操作
  • NVR软件快速对比表
  • [KaibaMath]1007 关于数列极限存在的唯一性证明
  • 变量、函数命名方式
  • 2025燃气采暖锅炉厂家权威推荐榜:高效节能与品质保障口碑之
  • 2025年通风天窗厂家最新权威推荐榜:专业性能与高效通风口碑
  • 解决scoop安装的anaconda无法在商店版powershell使用的问题
  • 2025校平机厂家最新权威推荐榜:精准矫平与高效生产首选
  • 2025年苹果仓民宿最新权威推荐榜:工业遗存与人文情怀完美融
  • 鲜花 10.12
  • 数组01
  • 排除通过IP访问MySQL时出现的连接错误问题
  • 很早就想注册博客园了
  • AI代理从概念验证到生产部署全流程
  • CPU中的加法运算与减法运算
  • 笔记(C++篇)—— Day 12 - 详解
  • C++ - 从字符串中提取一个数的若干种写法
  • 深入解析:深入理解Kafka的复制协议与可靠性保证
  • 一键解决MetaHuman播放动画时头部穿模问题
  • 缓存一致性验证秘笈
  • 元推理:汉字的发音,同音也是某种同构?
  • 题解:qoj7759 Permutation Counting 2
  • EtherCAT芯片没有倍福授权的风险
  • 为何是「对话式」智能体?因为人类本能丨对话式智能体专场,Convo AIRTE2025
  • 2014-2024高考真题考点分布详细分析(另附完整高考真题下载) - 详解
  • CentOS 7 安装 bzip2-libs-1.0.6-13.el7.x86_64.rpm 的详细步骤
  • 单片机学习日记 - 详解
  • 金铲铲明星学生2触发条件
  • CSharp: Aspose.Cells 8.3.0 web excel Viewer