C++ limits头文件的用法(numeric_limits)
来源:互联网 发布:中级软件开发工程师 编辑:程序博客网 时间:2024/05/16 00:39
http://www.cplusplus.com/reference/limits/numeric_limits/
numeric_limits<double>::max () 是函数,返回编译器允许的 double 型数 最大值。类似的 numeric_limits<int>::max () 返回 编译器允许的 int 型数 最大值。需包含头文件 #include <limits> limits是STL提供的头文件(包含numeric_limits模板类),limit.h是C语言提供的头文件(包含一些宏定义)例子:#include <iostream>#include <limits>using namespace std; main(){cout << std::numeric_limits<double>::max () << endl;cout << std::numeric_limits<int>::max () << endl;}
一般来说,数值类型的极值是一个与平台相关的特性。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<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;//是否定义了数值极限
- system("pause");
- return 0;
- }
结果如下:
- limits头文件的用法(numeric_limits)
- C++ limits头文件的用法(numeric_limits)
- C++ limits头文件的用法(numeric_limits)
- C++ limits头文件的用法(numeric_limits)
- C++ limits头文件的用法(numeric_limits)
- C++ limits头文件的用法(numeric_limits)
- C++ limits头文件的用法(numeric_limits)
- C++ limits头文件的用法(numeric_limits)
- C++ limits头文件的用法(numeric_limits)
- C++ limits头文件的用法(numeric_limits)
- C++ limits头文件的用法(numeric_limits)
- C++ limits头文件的用法(numeric_limits)
- C++ limits头文件的用法(numeric_limits)
- C++ limits头文件的用法(numeric_limits)
- C++ limits头文件的用法(numeric_limits)
- C++ limits头文件的用法(numeric_limits)
- 【C++】limits头文件 numeric_limits
- c语言的头文件#include <limits.h>
- BeagleBone Black编译安装nginx
- 【SPOJ】4487 Can you answer these queries VI 【splay】
- #ifndef #define #endif防止的是“重复编译”,而不是“重复定义”
- 稳定排序和不稳定排序
- tftp server 安装
- C++ limits头文件的用法(numeric_limits)
- BFS 模板
- [sicily]1151. 魔板[Special judge]
- 压铸新技术和新工艺的发展状况
- iOS申请真机调试证书 图文详解
- Flex Builder教程
- HDU4994 Revenge of Nim
- win8.1 下载地址
- Android AlarmManager使用