IEEE-754: мощность множества рациональных чисел

#floating-point #ieee-754

#с плавающей запятой #ieee-754

Вопрос:

Какова мощность множества рациональных чисел, которые имеют точное представление в формате с плавающей запятой, совместимом с одинарной точностью IEEE-754?

Комментарии:

1. 2^32 минус размеры диапазонов, назначенных NAN и бесконечности.

Ответ №1:

Существует 2139095039 конечных положительных чисел с плавающей запятой. Существует столько конечных отрицательных чисел с плавающей запятой.

Вы хотите включить 0.0 и -0.0 как два элемента или как один? В зависимости от ответа сумма равна 2 * 2139095039 2 или 2 * 2139095039 1 , то есть, соответственно, 4278190080 или 4278190079.

Источник для числа 2139095039:

 #include <float.h>
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main(void) {
  float f = FLT_MAX;
  unsigned int i;
  memcpy(amp;i, amp;f, 4);
  printf("%un", i);
}
 

Комментарии:

1. @KevinL Представление положительных чисел с плавающей запятой, интерпретируемых как целое число, увеличивается с целого числа 0 для 0.0f до целого числа 2139095039 для FLT_MAX. Все конечные положительные числа с плавающей запятой находятся между этими двумя границами, и каждое число между этими двумя границами является представлением уникального числа с плавающей запятой. Это свойство представления IEEE 754. en.wikipedia.org/wiki/Single-precision_floating-point_format

2. Спасибо за объяснение!