C IEEE-Floats inf 等于 inf

2024-04-13

在 C 中,在使用 IEEE-754 浮点数的实现中,当我比较两个 NaN 浮点数时,它返回 0 或“false”。但是为什么两个都为 inf 的浮点数会被视为相等呢?

该程序打印“equal: ...”(至少在带有 gcc 的 Linux AMD64 下),在我看来它应该打印“ different: ...”。

#include <stdio.h>
#include <stdlib.h>

int main(void)
  {
    volatile double a = 1e200; //use volatile to suppress compiler warnings
    volatile double b = 3e200;
    volatile double c = 1e200;
    double resA = a * c;  //resA and resB should by inf
    double resB = b * c;
    if (resA == resB)
      {   
        printf("equal: %e * %e = %e = %e = %e * %e\n",a,c,resA,resB,b,c);
      }   
    else
      {   
        printf("different: %e * %e = %e != %e = %e * %e\n", a, c, resA, resB, b, c);
      }   
    return EXIT_SUCCESS;
  }

另一个例子,为什么我认为inf和inf不一样,是:自然数和有理数的个数都是无限的,但又不相同。

那么为什么inf==inf呢?


无穷大比较相等,因为标准就是这么说的。来自部分5.11 比较谓词的详细信息:

无限个相同符号的操作数应进行比较equal.

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

C IEEE-Floats inf 等于 inf 的相关文章

随机推荐

  • 如何在 Svelte 中将 css 从 node_modules 添加到 template.html

    我有一个 sapperjs 应用程序 就像您通过调用获得的应用程序一样npx degit sveltejs sapper template my app 我想添加一种字体 普通人可能会添加这样一行app template html 网络原因
  • 特定 Gmail ID 的 Android 应用内沙盒设置错误

    我的项目处于 Plyatore 测试版 该项目包含按月和按年订阅 因此 我添加了一个包含 8 个 Gmail ID 的沙盒设置来测试订阅 然后我在设备帐户设置中配置每个 Gmail ID 只有两个 ID 会出现购买对话框 其余 6 个 Gm
  • Angular 6 - 预期验证器在异步验证器中返回 Promise 或 Observable

    在我的 Angular 6 应用程序中 我有异步验证器来检查输入的电子邮件是否已注册 但现在我收到 预期验证器返回 Promise 或 Observable 我真的不知道为什么 import UserService from user se
  • Android GPS 获取当前位置

    我开发了一个简单的 Android 应用程序 在这个简单的应用程序中 我想获取 GPS 纬度和经度数据 它在我的模拟器中正常工作 但当我安装在真正的 Android 设备上时 它不起作用 请帮我解决这个问题 以下是我的代码 提前致谢 pub
  • 根据浏览器宽度移动背景图像

    leavesbg background f7fff7 url images leaves4 png repeat y fixed 480px top 因此 如果页面的宽度大于 800 像素 我想将背景图像向右移动一半 也就是说 如果他们以
  • HSV三角形的公式

    不知道下面两个公式是怎么推导出来的 请解释一下 我的声望点太低了 没法去问写公式的人 C 中的 HSV 三角形 https stackoverflow com questions 42531608 hsv triangle in c sha
  • maven-checkstyle-plugin 无法在 macOS 上使用 google_checks.xml

    我有一个 Java Maven 项目 我在家里使用 Windows 构建并正确执行了 checkstyle 它使用内置规则集 但我也尝试了外部文件 查看相同的代码 pom xml 它似乎不适用于 macOS 奇怪的是如果我使用sun che
  • 如何使用 jQuery 选择没有特定类名的元素?

    像我这样的突击队怎么可能使用臭名昭著且功能强大的 jQuery Sizzle CSS 和其他所有东西 选择器来选择一个没有名为 active 的类的元素 我尝试过 a class active etc 但它没有给出足够的结果 a not a
  • OpenCV 中的相机标定和鸟瞰投影

    我已经完成了相机校准 现在我想获得棋盘图片的鸟瞰图 如下所示 但结果很奇怪 看起来不是一个正方形 你可以看到图3 每个正方形都是7 95x7 95 有人知道为什么吗 gpsPoints 0 Point2f gpsPoints 1 Point
  • 从 VS Code 终端 (Windows 10) 打开 VS Code 中的选定文件夹

    我一直在寻找 但在使用 VS Code 终端时找不到任何方法来打开 VS Code 中选定的文件夹 这可能吗 您是否尝试在集成终端所属的同一个 VSCode 实例中打开 Try code r
  • 从新的 Firebase 检索数据

    请帮忙 迁移到新的 Firebase 后 我无法检索数据 使用这个结构 let ref FIRDatabase database reference override func viewDidLoad super viewDidLoad r
  • Spring/Java 错误:命名空间元素“annotation-config”...在 JDK 1.5 及更高版本上

    我有 Spring Java 应用程序 它是用编译器合规级别 1 5 我下载了一个新的 Linux 设置阿帕奇汤姆猫 8 0 8 我下载了JDK 8u5 我在bash中设置的路径如下 PATH PATH HOME jdk1 8 0 05 b
  • 在Android中压缩带有大图像的pdf

    这个问题通过java压缩带有大图像的pdf https stackoverflow com questions 20614350 compress pdf with large images via java给出了在 Java 中使用 iT
  • 您可以同时使用 Protractor 和 Appium 来测试混合应用程序吗?

    这是我的场景 我有一个基于 Angular JS 构建的网站 我能够使用量角器使网站自动化 然而 在网站上执行的某些操作会反映在 Android 和 IOS 设备中 这就是我想要实现的目标 像平常一样在网站上运行我的测试 但我也想触发命令来
  • 如何通过 .NET 将图像插入 Access OLE 字段

    我有一个 Access mdb 数据库 我想从 Visual C 2010 开发的应用程序中插入图像 图片存储在数据库中的 OLE 对象字段中 直接在 Access 中添加图像后 它们将以位图图像的格式存储 双击这些图片即可在 Access
  • Cypress - 验证一列中的每个表行是否包含相同的项目

    我有一个表 但是某种由 DIV 创建的 ag grid 而不是真正的表元素 div div Name 1 div div 25 div div div div Name 1 div div 25 div div 我想验证每个字段是否带有co
  • 有谁知道 CVS 命令行选项来获取上次签入的详细信息?

    我在 Windows 上使用 CVS 带有 WinCVS 前端 并且希望在构建失败时将上次签入的详细信息添加到我们的自动构建过程中的电子邮件中 以便更容易修复 我需要知道已更改的文件 更改它们的用户以及评论 我一直在尝试制定命令行选项 但似
  • 来自 links-own 的参数值

    我需要帮助 所以我想将代理拥有的参数指定为链接拥有的参数值的平均值 frienships own strength household own influence factor to create influence if friendsh
  • 在 Rails 资产管道的 js.coffee 文件中使用 erb 时出错

    我有以下代码 assets javascripts home js coffee erb jQuery gt addClickListeners gt document on click add chord link addChord do
  • C IEEE-Floats inf 等于 inf

    在 C 中 在使用 IEEE 754 浮点数的实现中 当我比较两个 NaN 浮点数时 它返回 0 或 false 但是为什么两个都为 inf 的浮点数会被视为相等呢 该程序打印 equal 至少在带有 gcc 的 Linux AMD64 下