#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. Спасибо за объяснение!