比较浮点值

2023-12-07

我刚刚读了一篇关于浮点值比较的声明

浮点值不得使用 == 或 != 进行比较 运营商。 大多数浮点值没有精确的二进制表示,并且有一个 精度有限。

如果是这样,比较两个浮点值的最佳方法是什么?


以下扩展方法可能有助于实现 Kevin 的建议:

public static bool IsEqualTo(this double a, double b, double margin)
{
    return Math.Abs(a - b) < margin;
}

public static bool IsEqualTo(this double a, double b)
{
    return Math.Abs(a - b) < double.Epsilon;
}

所以现在你可以这样做:

if(x1.IsEqualTo(x2)) ...
if(x1.IsEqualTo(x2, 0.01)) ...

只需更改IsEqualTo更改为更合适的名称,或将默认边距更改为比double.Epsilon, 如果需要的话。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

比较浮点值 的相关文章

  • Grpc - 将消息从一个客户端发送到连接到同一服务器的另一个客户端

    是否可以将消息从一个客户端发送到连接到同一服务器的另一个客户端 我想将数据从一个客户端发送到服务器然后发送到特定客户端 我想我需要获取客户端 ID 但我不知道如何获取此 ID 以及如何从服务器将此消息发送到该客户端 我这里有一个样本 这是一
  • 按扩展名过滤搜索文件返回太多结果

    我正在开发一个 C 控制台应用程序 它必须管理 Windows 操作系统上的文件 我需要获取具有特定扩展名的文件名 列表 我找到了很多解决方案 最建议的是以下一种 HANDLE hFind WIN32 FIND DATA data hFin
  • 有些有助于理解“产量”

    在我不断追求少吸的过程中 我试图理解 产量 的说法 但我不断遇到同样的错误 someMethod 的主体不能是迭代器块 因为 System Collections Generic List 不是迭代器接口类型 这是我被卡住的代码 forea
  • 无法注册时间触发的后台任务

    对于 Windows 8 应用程序 在 C Xaml 中 我尝试注册后台任务 很难说 但我想我的后台任务已正确注册 但是当我单击调试位置工具栏上的后台任务名称时 我的应用程序停止工作 没有任何消息 我查看了事件查看器上的日志 得到 具有入口
  • extern 声明和函数定义都在同一文件中

    我只是浏览了一下gcc源文件 在gcc c 我发现了类似的东西 extern int main int char int main int argc char argv 现在我的疑问是extern是告诉编译器特定的函数不在这个文件中 但可以
  • 强制初始化模板类的静态数据成员

    关于模板类的静态数据成员未初始化存在一些问题 不幸的是 这些都没有能够帮助我解决我的具体问题的答案 我有一个模板类 它有一个静态数据成员 必须为特定类型显式实例化 即必须专门化 如果不是这种情况 使用不同的模板函数应该会导致链接器错误 这是
  • 如何在 C# Designer.cs 代码中使用常量字符串?

    如何在 designer cs 文件中引用常量字符串 一个直接的答案是在我的 cs 文件中创建一个私有字符串变量 然后编辑 Designer cs 文件以使用此变量 而不是对字符串进行硬编码 但设计者不喜欢这样抛出错误 我明白为什么这行不通
  • 即使没有异步,CallContext.LogicalGetData 也会恢复。为什么?

    我注意到CallContext LogicalSetData LogicalGetData不按照我期望的方式工作 内部设置的值async方法得到恢复即使没有异步或任何类型的线程切换 无论如何 这是一个简单的例子 using System u
  • 不同 C++ 文件中的相同类名

    如果两个 C 文件具有相同名称的类的不同定义 那么当它们被编译和链接时 即使没有警告也会抛出一些东西 例如 a cc class Student public std string foo return A void foo a Stude
  • 在 VS 中运行时如何查看 C# 控制台程序的输出?

    我刚刚编写了一个名为 helloworld 的聪明程序 它是一个 C NET 4 5 控制台应用程序 在扭曲的嵌套逻辑迷宫深处 使用了 Console WriteLine 当我在命令行运行它时 它会运行并且我会看到输出 我可以执行其他命令并
  • 是否使用 C# 数据集? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我对 C 中的数据集概念有点困惑 编码 ASP NET 站点 但这并不重要 在我的阅读中 我了解到它们 本质上 用作我的应用程序和我的
  • 如何递归取消引用指针(C++03)?

    我正在尝试在 C 中递归地取消引用指针 如果传递一个对象 那就是not一个指针 这包括智能指针 我只想返回对象本身 如果可能的话通过引用返回 我有这个代码 template
  • 如果输入被重定向则执行操作

    我想知道如果我的输入被重定向 我应该如何在 C 程序中执行操作 例如 假设我有已编译的程序 prog 并且我将输入 input txt 重定向到它 我这样做 prog lt input txt 我如何在代码中检测到这一点 一般来说 您无法判
  • 如何在 C# 中创建异步方法?

    我读过的每一篇博客文章都会告诉您如何在 C 中使用异步方法 但由于某些奇怪的原因 从未解释如何构建您自己的异步方法来使用 所以我现在有这段代码使用我的方法 private async void button1 Click object se
  • WPF DataGrid / ListView 绑定到数组 mvvm

    我们假设你有 N 个整数的数组 表示行数的整数值 在模型中 该整数绑定到视图中的 ComboBox Q1 如何将数组 或数组的各个项目 绑定到 DataGrid 或 ListView 控件 以便 当您更改 ComboBox 值时 只有那么多
  • 代码中的.net Access Forms身份验证“超时”值

    我正在向我的应用程序添加注销过期警报 并希望从我的代码访问我的 web config 表单身份验证 超时 值 我有什么办法可以做到这一点吗 我认为您可以从 FormsAuthentication 静态类方法中读取它 这比直接读取 web c
  • Visual Studio 2015 - Web 项目上缺少共享项目参考选项卡

    我从 MSDN 订阅升级到 Visual Studio 2015 因为我非常兴奋地阅读有关共享项目的信息 当我们想要做的只是重用代码时 不再需要在依赖项中管理 21382 个 nuget 包 所以我构建了一个测试共享项目 其中包含一些代码
  • C++:二叉树所有节点值的总和

    我正在准备面试 我被一个二叉树问题困住了 我们如何计算二叉树所有节点中存在的值的总和 优雅的递归解决方案 伪代码 def sum node if node NULL return 0 return node gt value sum nod
  • 为什么空循环使用如此多的处理器时间?

    如果我的代码中有一个空的 while 循环 例如 while true 它将把处理器的使用率提高到大约 25 但是 如果我执行以下操作 while true Sleep 1 它只会使用大约1 那么这是为什么呢 更新 感谢所有精彩的回复 但我
  • 我可以使用 lambda 函数或 std::function 对象来代替函数指针吗?

    我有一个需要使用的库 它定义了以下内容 typedef void CallbackFunction const int i 并且有一个注册回调的函数 如下所示 void registerCallback CallbackFunction p

随机推荐

  • 从 Windows 服务启用/禁用 Aero

    我有一些代码可以在 Vista 中启用 禁用 Windows Aero 服务 并且我想在 Windows 服务中运行它 该代码在独立应用程序中运行 但是当我从服务运行它时 什么也没有发生 不会引发任何错误或异常 我意识到在服务中运行代码与在
  • 使用 ScalaTest 时出现 java.lang.NoSuchFieldError

    我在使用 ScalaTest 时遇到了一个很难调试的错误 奇怪的是 当我的程序没有 Main 对象时 似乎会发生这种情况 但当它有 Main 对象时 却不会发生这种情况 我的代码实际上只是使用带有多态方法的类型类从列表中获取切片 看起来像这
  • 一个用户数据库为多个应用程序数据库提供服务

    我正在管理一个相当大的数据库 该数据库的复杂性和设计都从单个应用程序数据库开始增长 现在计划添加第五个应用程序 该应用程序带有自己的模式和特定数据 我一直在研究 SSO 解决方案 但这并不是我真正想要的 我的目标是拥有一个客户注册 登录和授
  • 使用 Coldfusion SpreadsheetWrite 和 cfscript 创建多个工作表

    我想使用 CF9 SpreadsheetWrite 和 cfscript 创建一个包含两张表的 Excel 文件 就像是 var data spreadsheetNew data var key spreadsheetNew key spr
  • 比较 XML 时如何忽略某些元素?

    我有一条 XML 消息 如下所示
  • MYSQL 未启动(InnoDB:插件初始化因错误通用错误而中止)

    我重新启动了服务器 因为它冻结了 可能是迄今为止我做过的最愚蠢的事情 然后出现了一些内部服务器错误 我很快发现mysql启动失败 service mysql status 我读了mysql错误日志 Pastebin 并开始谷歌搜索 我正在运
  • 标准布局和尾部填充

    David Hollman 最近在推特上发布了以下示例 我对其进行了稍微简化 struct FooBeforeBase double d bool b 4 struct FooBefore FooBeforeBase float value
  • Postgres 函数结束循环并返回错误

    我尝试创建这个函数 但系统返回 循环错误 并且我不知道如何同时返回 3 个变量 我很努力地想弄清楚这个问题 但我没有在任何地方找到答案 CREATE OR REPLACE FUNCTION conta relatos fator norma
  • 如何在R中根据人体gif制作热图? [复制]

    这个问题在这里已经有答案了 我有一张人体 gif 需要在其上绘制热图 要使用的数据在R中 我找到了有关如何导入 gif 的说明 但我不确定如何将数据导入到 gif 中 我想我需要首先将 gif 放在网格上 然后获取一些坐标 然后将数据分配给
  • 用于轴标签的 Matplotlib DateFormatter 不起作用

    我正在尝试调整 x 轴日期刻度标签的格式 以便它仅显示年份和月份值 根据我在网上找到的信息 我必须使用mdates DateFormatter 但它对我当前的代码根本没有生效 有人看出问题出在哪里吗 日期是 pandas Dataframe
  • 如何使用反射在 Java 8 中获取方法参数名称?

    Java 8 能够使用 Reflection API 获取方法参数名称 如何获取这些方法参数名称 据我所知 类文件不存储形式参数名称 我如何使用反射获得这些 我如何获取这些方法参数名称 基本上 您需要 获取对 a 的引用Class 来自Cl
  • xhr.send(file) 不会将其作为多部分发布

    在 Firefox 3 6 和 Chrome 上 使用 xhr send file 只是将原始内容放入请求正文中 而不是真正的多部分 表单数据上传 尝试这样做 http kaply com weblog 2010 05 20 post mu
  • ::after 的 Angular ng 风格

    我正在设计一个动态的人力资源 水平 规则 在我的样式表中 hr my hr after content Generic 在我的模板中 div hr class my hr 但是使用 ng repeat 时如何动态更改模板中的内容 All n
  • 如何在android中以编程方式打开“设置”的“关于设备”部分中使用的电池?

    我正在开发一个 Android 应用程序 我想以编程方式打开设置的 关于设备 部分中存在的电池使用意图 我正在使用下面的代码 Intent i new Intent i setAction android provider Settings
  • woocommerce结账多次更新运费价值

    Woocommerce 允许使用下面的代码来更新运费 body trigger update checkout update shipping method true 我使用自定义运输插件 并且能够通过 ajax 更新成本并最终更新我的总计
  • 在 iPad 中隐藏地址栏

    我知道您可以使用以下命令隐藏 iPhone iPad Android 上的地址栏window scrollTo事物 然而 似乎没有什么可以摆脱 iPad 上的地址栏 我发现的唯一解决方法是添加元标记 然后让用户将页面添加到主屏幕 我错过了什
  • 使用 CMake 使用 LLVM LLD 发出单个 IR 位码文件

    我正在使用 Ubuntu 16 04 x86 64 和 LLVM 5 0 并且想使用 CMake 将项目编译为单个 LLVM IR 位码文件 我知道有一种方法可以使用 GOLD 链接器和 LLVM 插件来完成此操作 并添加 CMake 链接
  • 在 pandas 数据框单元格中插入列表

    我有一本字典 其中每个键都有一个值列表 与每个键关联的列表的长度是不同的 我想将字典转换为具有两列 键 和 值 的 pandas 数据框 每一行的 键 列中有一个字典键 值 列中有与其关联的值列表 数据框将如下所示 mapping dict
  • 如何将 CIFAR10 教程转换为 NCHW

    我正在尝试转换张量流 CIFAR10从 NHWC 到 NCHW 的教程 但不知道该怎么做 我只找到了诸如此类的答案this 这是几行代码 没有解释它是如何工作的以及在哪里使用它 这是我使用的一些不成功的尝试这种方法 def inferenc
  • 比较浮点值

    我刚刚读了一篇关于浮点值比较的声明 浮点值不得使用 或 进行比较 运营商 大多数浮点值没有精确的二进制表示 并且有一个 精度有限 如果是这样 比较两个浮点值的最佳方法是什么 以下扩展方法可能有助于实现 Kevin 的建议 public st