MAXFLOAT в Objective-C - PullRequest
       31

MAXFLOAT в Objective-C

5 голосов
/ 07 декабря 2011

Макс. Число с плавающей запятой определяется как:

math.h

#define    MAXFLOAT    0x1.fffffep+127f

Мне немного грустно, я никогда раньше этого не замечал.Что это на самом деле сказать?Я бы ожидал что-то вроде этого:

#define    MAXFLOAT    0xFFFFFFFF-1

Будет ли это вообще работать?

Ответы [ 2 ]

8 голосов
/ 07 декабря 2011

0x1.fffffep+127 (примерно) 1,999999999999999999999998 раз 2 ^ 127.Это число с плавающей запятой с показателем степени в шестнадцатеричном формате.

  • 0x = шестнадцатеричное представление
  • 1 = целая часть числа
  • .fffffe = дробная часть числа
  • p+127 = научная запись для "умножения на два от 127-й степени"
5 голосов
/ 07 декабря 2011

MAXFLOAT требуется для соответствия UNIX:

MAXFLOAT

[XSI] Значение максимального бесконечного числа с плавающей запятой одинарной точности.

0x1.fffffep+127f - это именно то значение, представленное в виде стандартного шестнадцатеричного литерала C с плавающей точкой.

Стандарт C требует, чтобы FLT_MAX был определен в <float.h>, и он имеет то же значение («максимальное представимое конечное число с плавающей точкой», согласно §5.2.4.2.2). FLT_MAX является более переносимым выбором, как того требует языковой стандарт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...