首页 > 编程语言 >C++ - 比较两个浮点数大小

C++ - 比较两个浮点数大小

时间:2024-05-25 14:35:10浏览次数:25  
标签:std epsilon 浮点数 float C++ abs 差值 大小

简介

两个浮点数不能直接使用  == 来确定相等,因为浮点数精度可能导致微小的误差

 

方法一:

使用std::abs()函数来比较两个浮点数的差值是否小于一个非常小的阈值

float a = 1.5;
float b = 2.3;
float epsilon = 1e-9;
 
if (std::abs(a - b) < epsilon) {
    cout << "a is equal to b" << endl;
} else if (a < b) {
    cout << "a is less than b" << endl;
} else {
    cout << "a is greater than b" << endl;
}

 

方法二:

使用std::numeric_limits<float>::epsilon()函数来比较两个浮点数的差值是否小于浮点数类型的最小可表示差值

#include <limits>
 
float a = 1.5;
float b = 2.3;
 
if (std::abs(a - b) < std::numeric_limits<float>::epsilon()) {
    cout << "a is equal to b" << endl;
} else if (a < b) {
    cout << "a is less than b" << endl;
} else {
    cout << "a is greater than b" << endl;
}

 

标签:std,epsilon,浮点数,float,C++,abs,差值,大小
From: https://www.cnblogs.com/citrus/p/18212363

相关文章

  • C++基础知识学习笔记(3)
    资料来源https://www.bilibili.com/video/BV1et411b73Z?p=84&vd_source=cc561849591f6a210152150b2493f6f3核心内容程序的内存模型代码区全局区在函数外面声明了全局变量,在main函数里面创建了局部变量,打印了其地址:静态变量:在普通变量前面加一个static,属于静态变量。静......
  • 【C++】回文数判断(for循环,简易思路)
    #include<stdio.h>#include<string.h>#include<iostream>usingnamespacestd;intmain(){chara[1001];intn,i,j;cin>>a;//输入字符串,注意:这里不会处理空格n=strlen(a);/......
  • C++ const关键字
    C++const关键字记得有次面试carmeraturning岗,面试官让我谈谈const关键字的作用我提到被const修饰变量会存入.rodata的只读数据段不可更改,面试官好像不是很满意,现在想想carmeraturning岗位好像主要用C++,面试官当时是想让我说说C++中const关键字的作用。C++中const关键字的作用......
  • 整数和浮点数在内存中的存储
    前言嗨,我是firdawn,在本章中我们将介绍,整数和浮点数在内存中的存储,以及大小端字节序,下面是本章的思维导图,下面让我们开始今天的学习吧!一,整数在内存中的存储1.1原码,反码,补码的概念我们知道计算机底层储存的其实是0和1组成的二进制序列,当我们储存一个有符号整数时,那它的......
  • 【C++】C++异常处理精要:从传统C语言错误处理到现代C++异常机制
    文章目录前言:1.C语言传统的处理错误的方式2.什么是异常处理机制?3.C++异常处理语法3.1.异常抛出(Throw)3.2.异常捕获(Catch)3.3.异常传递(ExceptionPropagation)3.4.异常规范(ExceptionSpecification)3.5.异常安全(Exceptionsafe)4.C++异常处理的最佳实践4.1.只在必......
  • 在Linux下管理MySQL的大小写敏感性
    当开发与Linux环境下MySQL数据库交互的Java应用程序时,理解MySQL中的大小写敏感性可以避免潜在的错误和问题。本指南深入探讨了MySQL中的大小写敏感设置,比较了5.7和8.0版本,并为Java开发者提供了最佳实践。1理解MySQL中的大小写敏感性默认情况下,MySQL在Windows上是大小写不敏感的......
  • C++ 组含子项自定义排序通用设计
    #include<memory>classBase;usingBaseSp=std::shared_ptr<Base>;classBase{public:  explicitBase(intid):ID(id){}  intID;};classSorter{public:  virtualboolsort(constBaseSp&l,constBaseSp&r){returntrue;......
  • 在 C++ 中 auto什么意思
    在C++中,是一个关键字,用于声明自动类型推断变量。它允许编译器根据变量初始化的表达式来推断其类型,从而减少代码中的类型冗长,提高代码的可读性和编写效率。auto使用声明的变量可以在编译时确定其类型,而不是在编写代码时显式指定类型。这在某些情况下可以简化代码,特别是当变......
  • 【C++】牛客——OR64 求和
    ✨题目链接:OR64求和✨题目描述 输入两个整数n和m,从数列1,2,3.......n中随意取几个数,使其和等于m,要求将其中所有的可能组合列出来✨输入描述:每个测试输入包含2个整数,n和m✨输出描述: 按每个组合的字典序排列输出,每行输出一种组合 ✨示例1......
  • STL 以及 C语言与C++的区别
    C++语言的标准库(STL)容器(Containers)vector:动态数组,可以动态增长和收缩,支持快速随机访问元素。list:双向链表,支持在任意位置快速插入和删除元素。map:关联容器,以键值对(key-value)形式存储元素,支持快速查找和插入。竞赛常用C++STL用法https://io.zouht.com/154.htmlv......