C++11标准模板(STL)- 常用数学函数 - 宏常量 - 求值得到float类型的安静NaN(NAN)

常用数学函数

求值得到float类型的安静NaN

NAN

定义于头文件 <math.h>

#define NAN /*implementation defined*/

(C99 起)

NAN 展开成求值为安静非数( QNaN )的 float 类型常量表达式。若实现不支持 QNaN ,则不定义此宏。

用于打印 NaN 的风格是实现定义的。

注意

有许多不同的 NaN 值,区别于其载荷与其符号位。宏 NAN 所生成的 NaN 的载荷与符号位的内容是实现定义的。

示例

显示用于打印 NaN 的风格和 IEEE 格式。

调用示例

#include <iostream>
#include <cstdlib>
#include <typeinfo>
#include <cinttypes>
#include <cmath>
#include <math.h>
#include <tgmath.h>int main()
{std::cout << std::boolalpha;//对给定的浮点值分类std::cout << "std::fpclassify(" << NAN << "):     "<< std::fpclassify(NAN) << std::endl;std::cout << std::endl;//检查给定数是否具有有限值std::cout << "std::isfinite(" << NAN << "):     "<< std::isfinite(NAN) << std::endl;std::cout << std::endl;//检查给定数是否是无穷大std::cout << "std::isinf(" << NAN << "):     "<< std::isinf(NAN) << std::endl;std::cout << std::endl;//检查给定数是否是NaNstd::cout << "std::isnan(" << NAN << "):     "<< std::isnan(NAN) << std::endl;std::cout << std::endl;//检查给定数是否正规std::cout << "std::isnormal(" << NAN << "):     "<< std::isnormal(NAN) << std::endl;std::cout << std::endl;//检查给定数是不是负数std::cout << "std::signbit(" << NAN << "):     "<< std::signbit(NAN) << std::endl;std::cout << std::endl;const float fNumber = std::tan(10);const float fNumber1 = std::cos(fNumber);//检查第一个浮点参数是否大于第二个std::cout << "std::isgreater(" << NAN << " ," << fNumber1 << "):     "<< std::isgreater(NAN, fNumber1) << std::endl;std::cout << std::endl;//检查第一个浮点参数是否大于等于第二个std::cout << "std::isgreaterequal(" << NAN << " ," << fNumber1 << "):     "<< std::isgreaterequal(NAN, fNumber1) << std::endl;std::cout << std::endl;//检查第一个浮点参数是否小于第二个std::cout << "std::isless(" << NAN << " ," << fNumber1 << "):     "<< std::isless(NAN, fNumber1) << std::endl;std::cout << std::endl;//检查第一个浮点参数是否小于或等于第二个std::cout << "std::islessequal(" << NAN << " ," << fNumber1 << "):     "<< std::islessequal(NAN, fNumber1) << std::endl;std::cout << std::endl;//检查第一个浮点参数是否小于或大于第二个std::cout << "std::islessgreater(" << NAN << " ," << fNumber1 << "):     "<< std::islessgreater(NAN, fNumber1) << std::endl;std::cout << std::endl;//检查两个浮点数值是否无序std::cout << "std::isunordered(" << NAN << " ," << fNumber1 << "):     "<< std::isunordered(NAN, fNumber1) << std::endl;std::cout << std::endl;//确定浮点数 x 与 y 是否无序,即一或两个是 NaN ,从而无法有意义地彼此比较。for (int i = 0; i <= 10; i += 1){const float fNumber = std::acos(-1) / 2 / i;const float fNumber1 = std::acos(fNumber) - i / 10;std::cout << "std::isunordered(" << fNumber1<< "," << NAN << "):   "<< std::isunordered(fNumber1, NAN) << std::endl;}std::cout << std::endl;for (int i = 0; i <= 10; i += 1){const float fNumber = std::cos(-1) / 2 / i;const float fNumber1 = std::cos(fNumber) - i / 10;std::cout << "std::isunordered(" << fNumber1<< "," << NAN << "):   "<< std::isunordered(fNumber1, NAN) << std::endl;}std::cout << std::endl;for (int i = 0; i <= 10; i += 1){const float fNumber = std::tan(i);const float fNumber1 = std::cos(fNumber) - i / 10;std::cout << "std::isunordered(" << fNumber1<< "," << NAN << "):   "<< std::isunordered(fNumber1, NAN) << std::endl;}std::cout << std::endl;for (int i = 0; i <= 10; i += 1){const float fNumber = std::atan(i * std::acos(-1));const float fNumber1 = std::sin(fNumber) / std::cos(fNumber);std::cout << "std::isunordered(" << fNumber1<< "," << NAN << "):   "<< std::isunordered(fNumber1, NAN) << std::endl;}return 0;
}

输出

std::fpclassify(nan):     256std::isfinite(nan):     falsestd::isinf(nan):     falsestd::isnan(nan):     truestd::isnormal(nan):     falsestd::signbit(nan):     falsestd::isgreater(nan ,0.797075):     falsestd::isgreaterequal(nan ,0.797075):     falsestd::isless(nan ,0.797075):     falsestd::islessequal(nan ,0.797075):     falsestd::islessgreater(nan ,0.797075):     falsestd::isunordered(nan ,0.797075):     truestd::isunordered(nan,nan):   true
std::isunordered(nan,nan):   true
std::isunordered(0.667457,nan):   true
std::isunordered(1.01973,nan):   true
std::isunordered(1.16723,nan):   true
std::isunordered(1.25123,nan):   true
std::isunordered(1.30591,nan):   true
std::isunordered(1.34447,nan):   true
std::isunordered(1.37316,nan):   true
std::isunordered(1.39536,nan):   true
std::isunordered(0.413063,nan):   truestd::isunordered(nan,nan):   true
std::isunordered(0.963731,nan):   true
std::isunordered(0.990891,nan):   true
std::isunordered(0.995948,nan):   true
std::isunordered(0.99772,nan):   true
std::isunordered(0.998541,nan):   true
std::isunordered(0.998987,nan):   true
std::isunordered(0.999255,nan):   true
std::isunordered(0.99943,nan):   true
std::isunordered(0.99955,nan):   true
std::isunordered(-0.0003649,nan):   truestd::isunordered(1,nan):   true
std::isunordered(0.0133882,nan):   true
std::isunordered(-0.57634,nan):   true
std::isunordered(0.989857,nan):   true
std::isunordered(0.401336,nan):   true
std::isunordered(-0.971594,nan):   true
std::isunordered(0.957956,nan):   true
std::isunordered(0.643719,nan):   true
std::isunordered(0.86954,nan):   true
std::isunordered(0.899437,nan):   true
std::isunordered(-0.202925,nan):   truestd::isunordered(0,nan):   true
std::isunordered(3.14159,nan):   true
std::isunordered(6.28319,nan):   true
std::isunordered(9.42477,nan):   true
std::isunordered(12.5664,nan):   true
std::isunordered(15.708,nan):   true
std::isunordered(18.8496,nan):   true
std::isunordered(21.9911,nan):   true
std::isunordered(25.1327,nan):   true
std::isunordered(28.2743,nan):   true
std::isunordered(31.4159,nan):   true

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/60956.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NodeJS 百度智能云文本转语音(实测)

现在文本转语音的技术已经非常完善了&#xff0c;尽管网络上有许多免费的工具&#xff0c;还是测试了专业的服务&#xff0c;选择了百度的TTS服务。 于是&#xff0c;在百度智能云注册和开通了文本转语音的服务&#xff0c;尝试使用NodeJS 实现文本转语音服务。但是百度的文档实…

信也科技和云杉网络的AI可观测性实践分享

1. 信也科技 2、云杉网络 2.1 中国移动

SQLite 安装指南

SQLite 安装指南 SQLite 是一种轻量级的数据库管理系统,因其小巧、快速和易于使用而广受欢迎。本指南将详细介绍如何在不同的操作系统上安装 SQLite,并确保您能够顺利开始使用它。 1. Windows 系统上的安装 1.1 下载 SQLite 访问 SQLite 官方网站:sqlite.org/download.ht…

【项目开发】Web App vs Native App,开发者作何选择?

文章目录 引言市场需求与机会竞技场的右侧:为移动屏幕优化的 Web 应用移动 Web 应用的优缺点移动 Web 应用的优势移动版Web应用的缺点引言 在建立稳固的移动网络存在感并为用户提供流畅的移动体验时,移动网络应用的必要性已经不再是可选项。然而,随着移动原生应用的兴起,出…

解析煤矿一张图

解析煤矿一张图 ​ 煤矿一张图是指通过数字化、智能化技术将煤矿的各项信息、数据和资源进行集中展示和管理&#xff0c;形成一个综合的可视化平台。这一平台将矿井的地理信息、设备状态、人员位置、安全生产、环境监测等信息整合成一个统一的“图形”&#xff0c;以便于管理者…

管家婆工贸ERP BR039.采购订单关联MRP明细表

最低适用版本&#xff1a; 工贸系列 23.8 插件简要功能说明&#xff1a; 采购订单明细表&#xff0c;支持显示采购订单明细上游请购单明细关联的MRP中对应销售订单明细产成品相关信息更多细节描述见下方详细文档 插件操作视频&#xff1a; 进销存类定制插件--采购订单关联M…

SpringBootTest常见错误解决

1.启动类所在包错误 问题 由于启动类所在包与需要自动注入的类的包不在一个包下&#xff1a; 启动类所在包&#xff1a; com.exmaple.test_02 但是对于需要注入的类却不在com.exmaple.test_02下或者其子包下&#xff0c;就会导致启动类无法扫描到该类&#xff0c;从而无法对…

Java 全栈知识体系

包含: Java 基础, Java 部分源码, JVM, Spring, Spring Boot, Spring Cloud, 数据库原理, MySQL, ElasticSearch, MongoDB, Docker, k8s, CI&CD, Linux, DevOps, 分布式, 中间件, 开发工具, Git, IDE, 源码阅读&#xff0c;读书笔记, 开源项目...

高效管理生产线:哪些项目管理工具最适合制造企业?

制造业的生产管理往往涉及复杂的流程和多部门协作&#xff0c;如何确保各环节顺利对接、信息准确传递&#xff0c;是每一家制造企业都在不断优化的问题。面对这些管理难题&#xff0c;越来越多的制造企业引入了项目管理软件&#xff0c;通过直观的任务分配、进度跟踪、数据反馈…

微信小程序 https://thirdwx.qlogo.cn 不在以下 downloadFile 合法域名列表中

授权登录后&#xff0c;拿到用户头像进行加载&#xff0c;但报错提示&#xff1a; https://thirdwx.qlogo.cn 不在以下 downloadFile 合法域名列表中 解决方法一&#xff08;未完全解决&#xff0c;临时处理&#xff09;&#xff1a;在微信开发者工具将不校验...勾上就可以访问…

Android - Pixel 6a 手机OS 由 Android 15 降级到 Android 14 操作记录

Pixel 6a 手机由 Android 14 升级到 Android 15了&#xff0c;但是由于一些原因又想降级回 Android 14&#xff0c; 能降吗&#xff1f;该怎么降级呢&#xff1f;本篇文章来记述实际操作过程&#xff0c;希望能给想做相同操作的人一些帮助。 答案当然是能降&#xff0c;而且我…

SOL链上Meme生态的崛起与未来#Dapp开发#链游#交易所#公链搭建

近年来&#xff0c;随着区块链技术的普及和NFT文化的流行&#xff0c;meme&#xff08;网络迷因&#xff09;逐渐成为区块链生态中的重要组成部分。meme不仅是一种互联网文化符号&#xff0c;更逐步渗透进了去中心化金融&#xff08;DeFi&#xff09;、NFT和元宇宙等多个领域&a…

C++模板特化实战:在使用开源库boost::geometry::index::rtree时,用特化来让其支持自己的数据类型

用自己定义的数据结构作为rtree的key。 // rTree的key struct OverlapKey {using BDPoint boost::geometry::model::point<double, 3, boost::geometry::cs::cartesian>; //双精度的点using MyRTree boost::geometry::index::rtree<OverlapKey, boost::geometry::in…

hive表名重命名、rename重命名

文章目录 一、重命名表的语法二、重命名遇到的坑2.1、重命名后重建原先的表报表已存在 一、重命名表的语法 在Hive中&#xff0c;重命名表的语法如下&#xff1a; ALTER TABLE table_name RENAME TO new_table_name;示例&#xff1a;alter table user rename to user_bak;注意…

开发中SQL积累

1.SQL中判断varchar类型是否为空&#xff1f; 检查 NULL 值&#xff1a; WHERE column_name IS NULL 检查空字符串&#xff1a; WHERE column_name 结合 NULL 和空字符串的检查&#xff1a; WHERE column_name IS NULL OR column_name 2.TRIM函数 作用&#xff1a;…

网络安全之WINDOWS端口及病毒编写

目录 一、常见端口和服务 二、Windows病毒编写 声明&#xff1a;学习视频来自b站up主 泷羽sec&#xff0c;如涉及侵权马上删除文章 声明&#xff1a;本文主要用作技术分享&#xff0c;所有内容仅供参考。任何使用或依赖于本文信息所造成的法律后果均与本人无关。请读者自行判…

spring-cache concurrentHashMap 自定义过期时间

1.自定义实现缓存构建工厂 import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap;import lombok.Getter; import lombok.Setter; import org.springframework.beans.factory.BeanNameAware; import org.springframework.beans.factory.…

面试编程题目(一)细菌总数计算

题目如图&#xff1a; 第一题&#xff1a; import lombok.AllArgsConstructor; import lombok.Data;import java.util.Arrays; import java.util.Collections; import java.util.List;/*** description: 细菌实体类* author: zhangmy* Version: 1.0* create: 2021-03-30 11:2…

css初始化(二十三课)

一、把所有标签的内外边距清零 * {padding: 0;margin: 0;} 二、把斜体的文字不倾斜 i,em {font-style: normal;} 三、去掉li标签前面的小圆点 li {list-style: none;} 四、照顾低版本浏览器&#xff0c;实现兼容性 img {border: 0;vertical-align: middle;} 五、鼠标经过按…

同步接口和异步接口-------每日一问

在软件开发中&#xff0c;同步接口和异步接口是两种不同的编程模型&#xff0c;它们在处理请求和响应的方式上有所不同。了解这两种接口的区别对于编写高效、响应良好的应用程序非常重要。 同步接口 (Synchronous Interface) 定义 同步接口是指在调用某个函数或方法时&#…