vak: (Default)
[personal profile] vak
Соорудил список всех "интересных" чисел с плавающей точкой (32-битных). Вдруг кому пригодится.

floats.txt

Некоторые выдающиеся экземпляры:
Знак
| Экспонента      Мантисса
0 00000000 00000000000000000000000 = 0.0
1 00000000 00000000000000000000000 = -0.0
0 00000000 00000000000000000000001 = 1.40129846e-45 денормализованное
0 00000000 10000000000000000000000 = 5.87747175e-39 денормализованное
0 00000000 11111111111111111111111 = 1.17549421e-38 денормализованное
0 00000001 00000000000000000000000 = 1.17549435e-38
0 01111111 00000000000000000000000 = 1.0
0 01111111 00000000000000000000001 = 1.00000012
0 01111111 10000000000000000000000 = 1.5
0 01111111 11111111111111111111111 = 1.99999988
0 10000000 00000000000000000000000 = 2.0
0 10000000 00000000000000000000001 = 2.00000024
0 10000000 10000000000000000000000 = 3.0
0 10000000 11111111111111111111111 = 3.99999976
0 11111110 00000000000000000000000 = 1.70141183e+38
0 11111110 11111111111111111111111 = 3.40282347e+38
0 11111111 00000000000000000000000 = inf
1 11111111 00000000000000000000000 = -inf
0 11111111 00000000000000000000001 = nan
0 11111111 10000000000000000000000 = nan
0 11111111 11111111111111111111111 = nan

Date: 2022-08-04 03:53 (UTC)
From: [personal profile] dijifi
Краёв не видно, а там самое интересное.

Хотя один край видно и там работать не будет: (1,2] отображается в (0,-1] а теперь прикиньте сколько индивидуальных значений IEEE float находятся в этих диапазонах.
Edited Date: 2022-08-04 03:57 (UTC)

Date: 2022-08-05 03:36 (UTC)
spamsink: (Default)
From: [personal profile] spamsink
Правильным решением будет делать цикл длиной 4 из младшего бита мантиссы и бита знака, благо есть разница между +0 и -0, и есть понятие ненормализованных чисел.