c++数值极限numeric_limits

2023-11-04

一般来说,数值类型的极值是一个与平台相关的特性。c++标准程序库通过template numeric_limits提供这些极值,取代传统C语言所采用的预处理常数。你仍然可以使用后者,其中整数常数定义于<climits>和<limits.h>,浮点常数定义于<cfloat>和<float.h>,新的极值概念有两个优点,一是提供了更好的类型安全性,二是程序员可借此写出一些template以核定这些极值。

下面是numeric_limits定义

下面是参数的解释

digits10

返回目标类型在十进制下可以表示的最大位数

epsilon

返回目标数据类型能表示的最逼近1的正数和1的差的绝对值

has_denorm

测试目标类型是不是可以非规范化表示示

has_denorm_loss

测试所有类型是不是能测出因为非规范化而造成的精度损失(不是因为结果本身的不精确)

has_infinity

测试目标类型是不是能表示无限(比如被0除,或者其他一些情况)

has_quiet_NaN

检查目标类型是不是支持安静类型的NaN

has_signaling_NaN

检查目标类型是不是支持信号类型的NaN

infinity

检查目标类型的无限类型(如果支持无限表示)

is_bounded

检查目标类型的取值是否有限

is_exact

测试目标类型的计算结果是不是不会造成舍入误差(比如float是0)

is_iec559

测试目标类型是不是符合IEC559标准

is_integer

测试目标类型是不是可以用整型来表示(比如char是1,float是0)

is_modulo

Tests if a type has a modulo representation.

is_signed

测试目标类型是否是带符号的

is_specialized

测试目标类型是不是在numeric_limits .模板类中有特殊定义

max

返回可取的有限最大值

max_exponent

Returns the maximum positive integral exponent that the floating-point type can represent as a finite value when a base of radix is raised to that power.

max_exponent10

Returns the maximum positive integral exponent that the floating-point type can represent as a finite value when a base of ten is raised to that power.

min

返回可取的最小值(规范化)

min_exponent

Returns the maximum negative integral exponent that the floating-point type can represent as a finite value when a base of radix is raised to that power.

min_exponent10

Returns the maximum negative integral exponent that the floating-point type can represent as a finite value when a base of ten is raised to that power.

quiet_NaN

返回目标类型的安静NAN的表示

radix

Returns the integral base, referred to as radix, used for the representation of a type.

round_error

返回目标类型的最大可能的舍入误差

round_style

Returns a value that describes the various methods that an implementation can choose for rounding a floating-point value to an integer value.

signaling_NaN

返回目标类型关于信号NAN的表示

tinyness_before

测试目标类型是不是能测定出微小的舍入误差

traps

Tests whether trapping that reports on arithmetic exceptions is implemented for a type.

 

再来一个小事例:

#include<iostream>  
#include<string>  
#include<limits>   //头文件  
using namespace std;  
int main(){  
 cout<<"numeric_limits<unsigned short>::min()= "<<numeric_limits<unsigned short>::min()<<endl; //unsigned short的最小值  
 cout<<"numeric_limits<unsigned short>::max()= "<<numeric_limits<unsigned short>::max()<<endl;  //unsigned short的最大值  
 cout<<"numeric_limits<int>::min()= "<<numeric_limits<int>::min()<<endl; //int的最小值  
 cout<<"numeric_limits<int>::max()= "<<numeric_limits<int>::max()<<endl;  //int的最大值  
 cout<<"numeric_limits<short>::min()= "<<numeric_limits<short>::min()<<endl;  
 cout<<"numeric_limits<short>::max()= "<<numeric_limits<short>::max()<<endl;  
 cout<<"numeric_limits<double>::min()= "<<numeric_limits<double>::min()<<endl;  
 cout<<"numeric_limits<double>::max()= "<<numeric_limits<double>::max()<<endl;  
  
 cout<<"numeric_limits<int>::is_signed()= "<<numeric_limits<int>::is_signed<<endl;//是否有正负号  
 cout<<"numeric_limits<string>::is_specialized()= "<<numeric_limits<string>::is_specialized<<endl;//是否定义了数值极限  
 return 0;  
}  

结果如下:

 

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

c++数值极限numeric_limits 的相关文章

  • C/C++语言实现WiFi(socket)数据收发(客户端和服务端)

    目录 客户端 client 服务端 server C C 实现TCP通信 接收WIFI数据 编程环境 VC 6 0 手机端 使用WiFi调试助手 提示 整个过程在局域网中进行 很多编程语言都可以实现socket通信 本博客将通过C C 实现
  • C++知识积累:内存对齐理解

    为什么要进行内存对齐 这是因为CPU的读取总是对齐的 举个例子 假设CPU是32位的 那么CPU每次读取的4字节数据的首地址都是4的倍数 也就是说 内存中数据首地址为4的倍数时 CPU一次操作就可以完成数据读取 假设有一个int型四字节大小
  • Qt5学习之路(vs2012下创建一个QT应用程序)2013-10-14

    刚开始学习QT在网上找的资料基本都是使用QT Create进行开发的 VS下开发的学习资料感觉很少很难找的到 视频教程也基本没看到过貌似 因为我们研发中心是使用MFC进行开发开发工具是VS2010 使用QT开发的话基本我们不会再使用QT C
  • 多线程系列之——事件内核对象

    所有内核对象里面事件内核对象是最简单的一个 它包括一个使用计数 还有两个布尔值 一个布尔值用来表示事件是手动重置事件还是自动重置事件 另一个布尔值表示当前是否处于触发状态 当一个手动重置事件被触发的时候 所有等待该事件的线程都能变成调度状态
  • std::nth_element bug引起的crash问题

    1 源码 auto less compare const MirroringGroup mg1 const MirroringGroup mg2 gt bool return mg1 usage lt mg2 usage std nth e
  • C++工程师复习题

    一 auto ptr 类使用必须满足下列限制 1 不要使用 auto ptr 对象保存指向静态分配对象的指针 2 不要使用两个 auto ptrs 对象指向同一对象 3 不要使用 auto ptr 对象保存指向动态分配数组的指针 4 不要将
  • 编写程序模拟完成动态分区存储管理方式的内存分配和回收。

    usr bin python coding utf 8 class Table object 空闲分区表 0 开始地址 1 长度 freeTable 占用分区表 0 程序名 1 开始地址 2 长度 useTable def init sel
  • c/c++入门教程 - 1.基础c/c++ - 1.0 Visual Studio 2019安装环境搭建

    推荐视频课程 https www bilibili com video BV1et411b73Z p 2 已投币三连 b站果然是个学习的网站 本来是想在linux环境下运行QT 于是先学了几个月linux嵌入式驱动开发 后来发现太底层了 与
  • 写时拷贝技术(copy-on-write)

    传统的fork 系统调用直接把所有的资源复制给新创建的进程 这种实现过于简单并且效率低下 因为它拷贝的数据也许并不共享 更糟的情况是 如果新进程打算立即执行一个新的映像 那么所有的拷贝都将前功尽弃 Linux的fork 使用写时拷贝 cop
  • 简析多级指针解引用

    转自 简析多级指针解引用 指针是C语言中公认的最为强大的语法要素 但同时也是最难理解的语法要素 它曾给程序员带来了无数麻烦和痛苦 以致于在C语言之后诞生的很多新兴 语言中我们再也难觅指针的身影了 下面是一个最简单的C语言指针的例子 int
  • C/C++中浮点数格式学习——以IEEE75432位单精度为例

    这是浮点数的通常表示形式 在IEEE754中 单精度浮点数有如下形式 32位单精度 单精度二进制小数 使用32个比特存储 1 8 23位长 S Exp Fraction 31 30至23偏正值 实际的指数大小 127 22至0位编号 从右边
  • 大端模式和小端模式转化

    在工作中遇到一个问题 数据是以大端模式存储的 而机器是小端模式 必须进行转换 否则使用时会出问题 一 定义 大端模式 Big Endian 数据的高字节 保存在内存的低地址中 数据的低字节 保存在内存的高地址中 小端模式 Little En
  • C/C++ 引用作为函数的返回值

    语法 类型 函数名 形参列表 函数体 特别注意 1 引用作为函数的返回值时 必须在定义函数时在函数名前将 2 用引用作函数的返回值的最大的好处是在内存中不产生返回值的副本 代码来源 RUNOOB include
  • GDAL多光谱与全色图像融合简单使用

    目录 简述 C 代码 效果对比 GDAL融合效果和原始多光谱波段对比 GDAL融合效果和原始全色波段对比 ARCGIS融合效果与原始全色和多光谱对比 GDAL融合效果与ArcGIS融合效果对比 简述 最近在GDAL的代码中看见了gdalpa
  • Lua和C++交互总结(很详细)

    出处 http blog csdn net shun fzll article details 39120965 一 lua堆栈 要理解lua和c 交互 首先要理解lua堆栈 简单来说 Lua和C c 语言通信的主要方法是一个无处不在的虚拟
  • lua和测试(一)

    lua做为一门高级语言 在游戏产业运用到机会越来越多了 测试掌握几门脚本语言也有一定的重要性 以下对于lua组合输入做出一些引导 测试需要掌握的关于返回数值 主要用到布尔类 前言的指引 lua的语法比较简单和清晰 学过c语言的可以很好的掌握
  • 检查内存泄露

    自己编写的视频处理程序出现了一个问题 每帧的运行时间随着运行时间在不断增长 很大可能是出现了内存泄露 于是学习了一些查看内存泄露的方法 做了两种尝试 一是VS自带的DEBUG下的检测 view pl html view plain copy
  • 一个简单的参数帮助框架,c实现

    文章目录 具体实现如下 include
  • C/C++编程:令人印象深刻的高级技巧案例

    C C 编程语言在软件开发领域有着悠久的历史 由于其高效 灵活和底层访问能力 至今仍然被广泛应用 本文将介绍一些在C C 编程中令人印象深刻的高级技巧 帮助读者提升编程水平 更加高效地使用这两种强大的编程语言 一 指针运算与内存管理 C C
  • C++ 中 const 和 constexpr 关键字解析:常量、函数和指针

    很多 C 的初学者看到 const 这个关键字的第一反应都是一头雾水 主要是因为 const 可 以出现在很多的位置 以及后面加入的 constexpr 更是常常感到困惑 今天就为大家一一解释出现它们的含义和以及作用 const 关键字 c

随机推荐

  • 1262、可被三整除的最大和(扩展、可被k整除的最大和)

    LeetCode 1262 可被三整除的最大和 给你一个整数数组 nums 请你找出并返回能被三整除的元素最大和 示例 1 输入 nums 3 6 5 1 8 输出 18 解释 选出数字 3 6 1 和 8 它们的和是 18 可被 3 整除
  • mybatis-plus注解实现数据的批量操作

    1 批量删除 Delete Integer deletePrinterBindAll String pri
  • vue怎么在style中使用data中定义的变量

    需求 动态修改三方组件的样式 思路 项目开发中使用的某某某三方ui组件 所以想要修改这个组件的样式只能通过css进行修改 那么想要动态修改 就要在style中使用data里的变量 实现
  • python伪造请求头x-forwarded-for的作用_python3-requests伪造x-forwarded-for以及解决

    通常 我们的服务器会有一级或者多级的反向代理 因此我们代码中拿remote addr会取到最后一级反向代理的ip 为了拿到真实ip 常常会去x Forward For中拿用户最后一级代理Ip 但是由于该值是header中的 直接去取可能取到
  • Flink 窗口

    介绍 流式计算是一种被设计用于处理无限数据集的数据处理引擎 而无限数据集是指一种不断增长的本质上无限的数据集 而 window 是一种切割无限数据为有限块进行处理的手段 其分为两种类型 1 时间窗口 2 计数窗口 一 时间窗口 时间窗口根据
  • 使用ul li 实现图片的左右滚动

    最近项目中使用到了一个效果 即图片的左右滚动效果 以前也写过 但是没有整理 这次顺手整理一下吧 实现的思路很简单 图片列表使用li 实现 在ul 的最外层包裹上div 将这个div的overflow设置为隐藏 并且将ul的宽度设置到最够大
  • SQL注入—搜索注入

    SQL注入 搜索注入 本文仅供学习或参考 实验准备 皮卡丘靶场 SQL Injection 搜索型注入 实验步骤 输入任意字母 以 k 为例 进行模糊查询 查看结果 猜想数据库查询语句 select from table where use
  • Springboot整合 Minio

    Springboot整合 Minio 1 添加依赖
  • VMware Workstation虚拟机无桥接模式以及主机为无线的桥接配置

    目录 一 虚拟机网络设置无桥接模式 二 vmware 11版本 打开vm14 不兼容问题解决 三 主机为无线网络时虚拟机如何配置桥接上网 一 虚拟机网络设置无桥接模式 1 执行WIN R 输入services msc 打开服务管理器 回车
  • 快速解决Emulator: emulator: ERROR: x86 emulation currently requires hardware acceleration!

    问题 Emulator emulator ERROR x86 emulation currently requires hardware acceleration 翻译 Emulator Emulator 错误 x86仿真模拟器当前需要硬件
  • 前端页面的居中问题

    垂直居中 1 设置子块元素的line height的高度为父元素的高度就可以 2 如果子元素为行内元素 可以将子元素display设置为block 水平居中 直接设置 text align center 决定行内元素 实现文字的水平居中 设
  • redis服务器命令方法详解

    redis服务器命令方法详解 指令 BGREWRITEAOF rewrite BGSAVE bgsave FLUSHALL SAVE Sync Slaveof PSYNC redis 2 8 版本 DBSIZE 指令 BGREWRITEAO
  • OpenAI 开发系列(四):掌握OpenAI API调用方法

    全文共4000余字 预计阅读时间约17 30分钟 满满干货 附代码 建议收藏 本文目标 明确获取OpenAI API密钥的流程 理解如何调用OpenAI的各类大模型 并了解其对应的相关参数 代码下载点这里 一 获取OpenAI的API ke
  • 谷歌身份验证怎么登录_使用Google登录身份验证用户

    谷歌身份验证怎么登录 I hate dealing with user authentication so I m very happy to make user management and authentication somebody
  • c#:浅析var关键字

    c 浅析var关键字 1 var关键字介绍 var关键字是c 3 5新增的特性 称为推断类型 弱类型 由var声明的变量 编译器会根据上下文来判断你到底想用什么类型 也就是说当你无法确定自己将使用什么类型时 就可以使用var var类似于o
  • R语言——(四)、数据读入与预处理

    文章目录 一 数据读入 1 直接输入数据 2 读R包中的数据 3 从外部文件读入数据 3 1 读入文本文件 TXT 3 2读入Excel格式文件 3 3读入其它格式文件 SAS数据 SPSS数据 Stata数据等 二 写入数据 三 数据预处
  • Angular Tracy 小笔记 其他 dos 命令,发布

    其他命令 Angular Material ng add angular material Add PWA support ng add angular pwa Add Dependency ng add Run and Watch Tes
  • Java中Steam流的详解

    在Java中 Stream是一种用于操作集合 Collection 和数组的高级抽象 它提供了一种功能强大且表达力丰富的编程模型 可以以声明性的方式对数据进行处理和转换 概述 Stream是Java 8引入的一种新的抽象 它使得我们可以以类
  • python 实现简易的学员管理系统

    文章目录 前言 基本思路 需求实现 1 实现菜单的功能 2 提示用户输入需要进行的操作 并执行相关操作 3 具体函数功能的实现 增加学员信息 显示所有学员信息 删除学员信息 修改学员信息 查询学员信息 整体代码展示 前言 前面我们已经学习了
  • c++数值极限numeric_limits

    一般来说 数值类型的极值是一个与平台相关的特性 c 标准程序库通过template numeric limits提供这些极值 取代传统C语言所采用的预处理常数 你仍然可以使用后者 其中整数常数定义于