一般来说,数值类型的极值是一个与平台相关的特性。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除 |