C 语言的浮点特征

C 语言的浮点特征C 语言中的浮点数类型的特征由描述浮点数表示的以下模型定义 浮点模型对于 C 语言标准规定的浮点数类型特征 遵循标准的实现必须让这些值在绝对值上大于 小于或等于标准值 但符号保持不变 我们以 C11 为例 给出 C 语言标准中对浮点型特

欢迎大家来到IT世界,在知识的湖畔探索吧!

C 语言中的浮点数类型的特征由描述浮点数表示的以下模型定义:

C 语言的浮点特征
欢迎大家来到IT世界,在知识的湖畔探索吧!

浮点模型

对于 C 语言标准规定的浮点数类型特征,遵循标准的实现必须让这些值在绝对值上大于 / 小于或等于标准值,但符号保持不变。我们以 C11 为例,给出 C 语言标准中对浮点型特征的定义。同时,作为对比,也会给出 64 位环境 Ubuntu 16.04 系统(以下简称 U16_x64)中定义的实际值。

注:U16_x64 使用的 gcc 版本是 5.4.0,浮点型特征的定义位于头文件
/usr/lib/gcc/x86_64-linux-gnu/5/include/float.h。

  • 指数表达式的基数(b)

宏定义

FLT_RADIX

C11 的规定

2

U16_x64 的实现

2

  • 浮点有效位中以 FLT_RADIX 为基数的有效位数(p)

宏定义

FLT_MANT_DIG

C11 的规定

U16_x64 的实现

24

宏定义

DBL_MANT_DIG

C11 的规定

U16_x64 的实现

53

宏定义

LDBL_MANT_DIG

C11 的规定

U16_x64 的实现

64

  • 十进制位数 n,满足条件:任何 p 位以 b 为基数的浮点数可与这 n 位十进制浮点数相互转化,否则使用值C 语言的浮点特征(b 不是 10 的幂,结果向上圆整)

宏定义

FLT_DECIMAL_DIG

C11 的规定

6

U16_x64 的实现

9

宏定义

DBL_DECIMAL_DIG

C11 的规定

10

U16_x64 的实现

17

宏定义

LDBL_DECIMAL_DIG

C11 的规定

10

U16_x64 的实现

21

  • 十进制位数 n,满足条件:任何最宽范围的C 语言的浮点特征位以 b 为基数的浮点数可与这 n 位十进制浮点数相互转化,否则使用值C 语言的浮点特征(b 不是 10 的幂,结果向上圆整)

宏定义

DECIMAL_DIG

C11 的规定

10

U16_x64 的实现

21

  • 十进制位数 q,满足条件:这 q 位十进制浮点数可与任何 p 位以 b 为基数的浮点数相互转化,否则使用值C 语言的浮点特征(b 不是 10 的幂,结果向下圆整)

宏定义

FLT_DIG

C11 的规定

6

U16_x64 的实现

6

宏定义

DBL_DIG

C11 的规定

10

U16_x64 的实现

15

宏定义

LDBL_DIG

C11 的规定

10

U16_x64 的实现

18

  • 满足以下条件的最小负整数C 语言的浮点特征:FLT_RADIX 的C 语言的浮点特征次幂仍然是规范化浮点数

宏定义

FLT_MIN_EXP

C11 的规定

U16_x64 的实现

-125

宏定义

DBL_MIN_EXP

C11 的规定

U16_x64 的实现

-1021

宏定义

LDBL_MIN_EXP

C11 的规定

U16_x64 的实现

-16381

  • 满足以下条件的最小负整数:10 的该次幂仍然是规范化浮点数(C 语言的浮点特征,结果向上圆整)

宏定义

FLT_MIN_10_EXP

C11 的规定

-37

U16_x64 的实现

-37

宏定义

DBL_MIN_10_EXP

C11 的规定

-37

U16_x64 的实现

-307

宏定义

LDBL_MIN_10_EXP

C11 的规定

-37

U16_x64 的实现

-4931

  • 满足以下条件的最大整数C 语言的浮点特征:FLT_RADIX 的C 语言的浮点特征次幂仍然是可表示的有限浮点数

宏定义

FLT_MAX_EXP

C11 的规定

U16_x64 的实现

+128

宏定义

DBL_MAX_EXP

C11 的规定

U16_x64 的实现

+1024

宏定义

LDBL_MAX_EXP

C11 的规定

U16_x64 的实现

+16384

  • 满足以下条件的最大整数:10 的该次幂仍然是可表示的有限浮点数(C 语言的浮点特征,结果向下圆整)

宏定义

FLT_MAX_10_EXP

C11 的规定

+37

U16_x64 的实现

+38

宏定义

DBL_MAX_10_EXP

C11 的规定

+37

U16_x64 的实现

+308

宏定义

LDBL_MAX_10_EXP

C11 的规定

+37

U16_x64 的实现

+4932

  • 可表示的最大有限浮点数(C 语言的浮点特征

宏定义

FLT_MAX

C11 的规定

1E+37

U16_x64 的实现

3.E+38

宏定义

DBL_MAX

C11 的规定

1E+37

U16_x64 的实现

1.E+308

宏定义

LDBL_MAX

C11 的规定

1E+37

U16_x64 的实现

1.E+4932

  • 1 与大于 1 的最小可表示值之间的差值(C 语言的浮点特征

宏定义

FLT_EPSILON

C11 的规定

1E-5

U16_x64 的实现

1.E-07

宏定义

DBL_EPSILON

C11 的规定

1E-9

U16_x64 的实现

2.E-16

宏定义

LDBL_EPSILON

C11 的规定

1E-9

U16_x64 的实现

1.084202E-19

  • 最小的规范化正浮点数(C 语言的浮点特征

宏定义

FLT_MIN

C11 的规定

1E-37

U16_x64 的实现

1.E-38

宏定义

DBL_MIN

C11 的规定

1E-37

U16_x64 的实现

2.E-308

宏定义

LDBL_MIN

C11 的规定

1E-37

U16_x64 的实现

3.E-4932

  • 最小正浮点数

宏定义

FLT_TRUE_MIN

C11 的规定

1E-37

U16_x64 的实现

1.E-45

宏定义

DBL_TRUE_MIN

C11 的规定

1E-37

U16_x64 的实现

4.E-324

宏定义

LDBL_TRUE_MIN

C11 的规定

1E-37

U16_x64 的实现

3.E-4951

#头条创作挑战赛##C语言每日小知识#

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/124953.html

(0)
上一篇 1小时前
下一篇 55分钟前

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信