在 C++ 中表示浮点无穷大的方法

2023-12-24

我想在我的程序中用 C++ 表达浮点无穷大。 我遇到了两种方法来实现这一目标:使用INFINITY and std::numeric_limits<float>::infinity().

两种选择似乎都有效,但我不确定哪一种是更好的选择。 一方面,INFINITY是一个在 math.h 中定义的简单宏,使其易于使用。 另一方面,std::numeric_limits<float>::infinity()是一个函数<limits>并且是C++ STL的一部分,这似乎是一种常规方式。

总之:

我应该使用INFINITY or std::numeric_limits<float>::infinity()在我的 C++ 程序中表示浮点无穷大? 哪一种被认为是更好的做法,是否有我应该注意的性能或可移植性注意事项?


C 中引入宏来表达该语言中无法很好表达的事物。在这个特定的例子中,INFINITY命名一个编译时常量。

C++引入不同的方式进入语言允许您表达过去在 C 中需要宏来实现的相同内容(在许多情况下,但不是所有情况下)。对于这种特殊情况,C++ 有一种以各种方式命名编译时常量的方法。

相比INFINITY, using std::numeric_limits<float>::infinity()具有以下优点:

  • 它的作用域正确地位于名称空间内,这意味着其他代码可以使用该标识符infinity表示其他事物而不引起名称冲突。
  • 它是强类型的并且names一个类型,所以std::numeric_limits<T>::infinity()可以专门针对不同的值T,并且无需转换即可在通用上下文中使用。
  • 它是语言的一部分(而不是单独的预处理器语言),这使得第三方工具(例如 IDE)更容易与其交互。

由于历史原因,infinity() is a function但这并不是非常重要,因为(因为它是constexpr)您可以在任何可以使用任何其他常量表达式的上下文中使用它。

相反,相比std::numeric_limits<float>::infinity(), using INFINITY具有以下优点:

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

在 C++ 中表示浮点无穷大的方法 的相关文章

随机推荐

  • Groovy 的“它”是什么?

    我有一个正在处理的集合removeIf 在 Groovy 中 在街区内 我可以访问一些it标识符 这是什么 它记录在哪里 it是闭包中提供的隐式变量 当闭包没有显式声明的参数时它可用 当闭包与集合方法一起使用时 例如removeIf it将
  • 为当前目录提供服务的简单文件服务器[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个非常简单的垃圾箱 我可以在 shell 中启动它并让它为当前目录提供服务 最好不是 也许还有一个 p用于指定端口 由于它应该
  • AWK -- 如何进行选择性多列排序?

    在 awk 中 我该怎么做 Input 1 a f 1 12 v 2 b g 2 10 w 3 c h 3 19 x 4 d i 4 15 y 5 e j 5 11 z 所需的输出 通过对数值进行排序 5 1 a f 2 10 w 2 b
  • 如何从 Snomed Postgres Sql 数据库查找关系

    问题陈述 从 Snomed CT 数据库中提取所有父母 祖父母 子女和孙子女 描述 我正在尝试在本地机器上设置 snomed 数据库来提取特定概念的关系 所有父母和孩子 使用 Concept id 我已经从以下位置下载了 snomed 数据
  • 扁平化复杂的 json 对象以进行 mvc 绑定

    我的控制器以 json 格式将对象图返回到视图 如下所示 return Json customer 在视图上我的 json 对象看起来像这样 Name Joe Budget Amount 500 Spend 100 它正确映射到我的客户对象
  • MVC kendo 窗口 - 从 JavaScript 函数获取数据

    我的应用程序中有这个剑道窗口 Html Kendo Window Name copyStructure Title Copy Structure Content Loading LoadContentFrom CopyStructure N
  • 如何对解决方案中的所有文件禁用#nullable

    我想将我的代码库迁移到可为空的引用 之一迁移策略 https learn microsoft com en us dotnet csharp nullable migration strategies包括添加 nullable disabl
  • 为什么Rails 的composite_primary_keys gem 不起作用?

    我已按照说明进行操作here http roninonrails blogspot com 2008 04 gotcha compositeprimarykeys gem html 通过安装composite primary keys ge
  • 比较 Hibernate 中日期时间字段的时间部分

    我有一个使用 hibernate annotations mysql 组合进行 ORM 的应用程序 在该应用程序中 我得到了一个带有日期字段的实体 我正在寻找一种在时间范围内选择该日期的方法 所以hh mm ss没有日期部分 MySQL中有
  • Symfony:服务...依赖于不存在的参数 kernel.secret

    我正在尝试设置一个新的 Symfony 项目 当我执行 php console php config dump reference 时 出现错误 提示 服务 uri signer 依赖于不存在的参数 kernel secret 您的意思是
  • 解析SQL查询并提取列名和表名

    我有一个这样的查询脚本 SELECT View1 OrderDate View1 Email SUM View1 TotalPayments FROM dbo View1 WHERE View1 OrderStatus Completed
  • 如何在Mono中嵌入flash?

    是否可以在单声道应用程序中嵌入闪存 最好类似于它可以作为 ActiveX 控件嵌入到 Net 中的方式 但是任何 Flash 命令可以以某种方式冒泡到 Mono 应用程序的方式都可以 我原以为可以使用网页浏览器查看flash 但是我无法确定
  • 显示下拉列表时微调器的状态是什么?

    我正在创建一个带有自定义视图的微调器 无论如何 我设法在微调器处于非活动状态以及按下时显示不同的可绘制对象 我希望在下拉列表显示时保持按下状态可绘制 这是 mi XML 文件
  • 虚拟析构函数和未定义的行为

    这个问题不同于 我何时 为何应该使用virtual析构函数 struct B virtual void foo B lt not virtual struct D B virtual void foo D B p new D delete
  • 绝对元素和

    我试图在 Hackerrank 上解决这个问题 https www hackerrank com challenges playing with numbers problem https www hackerrank com challe
  • 有什么办法可以持续运行服务吗?

    Stack Overflow 上很少有类似的问题 但没有一个解决方案适合我 问题在于只有少数设备 例如 OnePlus 和 MI 一旦用户从最近的应用程序中删除应用程序 该服务就会被终止 我读到这些 OEM 使用一些激进的策略来终止服务 我
  • 将 WordPress 网站移至新域后,jQuery 无法正常工作

    我刚刚将我的网站移至 hostgator 上的新域 但现在该网站的内容未显示 无法运行的网站是http alcaldarone com http alcaldarone com我开发和工作的网站是http atcjr alcaldarone
  • Laravel 中的 whereHas 查询

    大家好 filterArray explode filters data articles DB table products gt join product category function q q gt on product cate
  • CSS 列数和 Chrome 错误:如何避免溢出内容被裁剪

    When column count被使用 它似乎裁剪任何overflow内容 columns webkit column count 1 webkit column gap 10px webkit column fill auto moz
  • 在 C++ 中表示浮点无穷大的方法

    我想在我的程序中用 C 表达浮点无穷大 我遇到了两种方法来实现这一目标 使用INFINITY and std numeric limits