📜  <cfloat>C / C++中的float.h及其示例

📅  最后修改于: 2021-05-30 13:18:26             🧑  作者: Mango

该头文件由平台相关的特定于实现的浮点值组成。浮点有四个部分

  • 符号
    它的值可以是负数,也可以是非负数。
  • 根据
    也称为指数表示的基数,它表示具有单个数字的不同数字,即2代表二进制,10代表十进制,16代表十六进制,…
  • 尾数
    也称为有效数字。它是基数的一系列数字。系列中的位数称为精度
  • 指数
    也称为特征,它是最小值e min和最大值e max之间的整数。

宏常量

库宏是浮点类型的特定于硬件的值。 FLT表示浮点型, DBL表示精度型,LDBL表示长双精度型DIG表示数字MANT表示尾数EXP表示指数

  1. FLT_RADIX:所有浮点类型的基础
    Minimum value is 2
  2. FLT_DIG:可以舍入为浮点类型并再次返回到相同十进制数字的十进制数字的数量,而不会降低精度。
    Minimum value is 6
  3. DBL_DIG或LDBL_DIG:可以四舍五入为浮点数并在不改变小数位数的情况下取整的小数位数。
    Minimum value is 10
  4. DECIMAL_DIG:表示浮点值所需的小数位数
    No Minimum value
  5. FLT_MANT_DIG或DBL_MANT_DIG或LDBL_MANT_DIG:尾数的精度,即符合有效位数的位数。
    No Minimum value
  6. FLT_MIN_EXP或DBL_MIN_EXP或LDBL_MIN_EXP:生成标准化浮点数的指数的最小负整数值。
    No Minimum value
  7. FLT_MIN_10_EXP或DBL_MIN_10_EXP或LDBL_MIN_10_EXP:以10为基的表达式的指数的最小负整数值,该整数将生成标准化的浮点数。
    Maximum value is -37
  8. FLT_MAX_EXP或DBL_MAX_EXP或LDBL_MAX_EXP:生成标准化浮点数的指数的最大整数值。
    No Minimum value
  9. FLT_MAX_10_EXP或DBL_MAX_10_EXP或LDBL_MAX_10_EXP:以10为基的表达式的指数的最大整数值,该整数将生成标准化的浮点数。
    Minimum value is 37
  10. FLT_MAX或DBL_MAX或LDBL_MAX:可表示的最大有限浮点数。
    Minimum value is 1037
  11. FLT_EPSILON: 1与可表示的大于1的最小值之间的差。
    Maximum value is 10-5
  12. DBL_EPSILON或LDBL_EPSILON: 1与可表示的大于1的最小值之间的差。
    Maximum value is 10-9
  13. FLT_MIN或DBL_MIN或LDBL_MIN:最小可表示的正浮点数。
    Maximum value is 10-37
  14. FLT_ROUNDS:四舍五入到浮点数
    不同的可能值为:
    -1 : indeterminate
     0 : towards zero
     1 : towards one
     2 : towards positive infinity
     3 : towards negative infinity
    
  15. FLT_EVAL_METHOD:四舍五入浮点数
    不同的可能值为:
    -1 : undetermined
     0 : evaluate just to the range 
         and precision of the type
     1 : evaluate float and double as double,
         and long double as long double.
     2 : evaluate all as long double and Other 
         negative values indicate an 
         implementation defined behavior.
    

下面的程序演示了cfloat库中宏常量的工作。

// C++ program to demonstrate working
// of macros constants in cfloat library
  
#include 
#include 
using namespace std;
  
int main()
{
    cout << "FLT_RADIX : "
         << FLT_RADIX << endl;
    cout << "FLT_DIG : "
         << FLT_DIG << endl;
    cout << "DECIMAL_DIG : "
         << DECIMAL_DIG << endl;
    cout << "FLT_MIN_10_EXP : "
         << FLT_MIN_10_EXP << endl;
    cout << "FLT_MAX_EXP : "
         << FLT_MAX_EXP << endl;
    cout << "FLT_MAX_10_EXP : "
         << FLT_MAX_10_EXP << endl;
    cout << "FLT_MAX : "
         << FLT_MAX << endl;
    cout << "FLT_MIN : "
         << FLT_MIN << endl;
    return 0;
}
输出(取决于机器):
FLT_RADIX : 2
FLT_DIG : 6
DECIMAL_DIG : 21
FLT_MIN_10_EXP : -37
FLT_MAX_EXP : 128
FLT_MAX_10_EXP : 38
FLT_MAX : 3.40282e+38
FLT_MIN : 1.17549e-38

参考: http://www.cplusplus.com/reference/cfloat/

要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”