Objective-C中的MAXFLOAT

slf*_*slf 5 c floating-point objective-c

Max float被定义为:

文件math.h

#define    MAXFLOAT    0x1.fffffep+127f
Run Code Online (Sandbox Code Playgroud)

我有点难过,我以前从未注意到这一点.这究竟是什么意思?我原以为这样:

#define    MAXFLOAT    0xFFFFFFFF-1
Run Code Online (Sandbox Code Playgroud)

那甚至会起作用吗?

Sco*_*bes 8

0x1.fffffep+127是(大致)1.99999999999999999999998乘以2 ^ 127.它是一个浮点数,带有十六进制的指数.

  • 0x =十六进制表示法
  • 1 =数字的整数部分
  • .fffffe =数字的小数部分
  • p+127 ="第二次到第127次幂"的科学记数法


Ste*_*non 5

MAXFLOAT UNIX一致性是必需的:

MAXFLOAT

[XSI]最大非无限单精度浮点数的值.

0x1.fffffep+127f 恰好是该值,表示为标准C十六进制浮点字面值.

C标准要求FLT_MAX定义<float.h>,并且它具有相同的值("最大可表示的有限浮点数",根据§5.2.4.2.2). FLT_MAX是一种更便携的选择,因为它是语言标准所要求的.