Изменения

Перейти к: навигация, поиск

Представление вещественных чисел

3739 байт добавлено, 22:52, 19 октября 2011
м
Добавил информацию о представлении бесконечностей
'''Как можно получить NaN?'''
<br/>
 
* <tex>\infty+(-\infty)= NaN</tex>
 
* <tex>0\times\infty= NaN</tex>
 
* <tex>\frac{\pm0}{\pm0}=\frac{\pm\infty}{\pm\infty} = NaN</tex>
 
* <tex>\sqrt{x} = NaN</tex>, где <tex>x<0</tex>
 
Есть и другие способы получить NaN, подробности можно найти по ссылкам в соответствующем разделе.
По определению NaN ≠ NaN, поэтому, для проверки значения переменной нужно просто сравнить ее с собой.
<!-- TODO: написать про sNaN и qNaN -->
 
 
=== Бесконечности ===
В число с плавающей запятой можно записать значение <tex>+\infty</tex> или <tex>-\infty</tex>. Как и нули со знаком, бесконечности позволяют получить хотя бы близкий к правильному результат вычисления в случае переполнения. Согласно стандарту IEEE 754 число с плавающей запятой считается равным бесконечности, если все двоичные разряды его порядка - единицы, а мантисса равна нулю. Знак бесконечности определяется знаковым битом числа.
 
{|class="wikitable" style="border-collapse: collapse; border: none"
|-
!colspan=5 style="background-color: powderblue; border: thin solid black; border-bottom: none"|Знак
|-
!style="background-color: powderblue; border: thin solid black; border-top: none"|
!colspan=5 style="background-color: lightgreen; border: thin solid black"|Порядок
!colspan=11 style="background-color: lightcoral; border: thin solid black"|Мантисса
!style="border: none"|
|-style="text-align: right"
!style="background-color: powderblue; border: thin solid black"|<sup>0</sup>/<sub>1</sub>
!style="background-color: lightgreen; border: thin solid black"|1
!style="background-color: lightgreen; border: thin solid black"|1
!style="background-color: lightgreen; border: thin solid black"|1
!style="background-color: lightgreen; border: thin solid black"|1
!style="background-color: lightgreen; border: thin solid black"|1
!style="border: none"|1,
!style="background-color: lightcoral; border: thin solid black"|0
!style="background-color: lightcoral; border: thin solid black"|0
!style="background-color: lightcoral; border: thin solid black"|0
!style="background-color: lightcoral; border: thin solid black"|0
!style="background-color: lightcoral; border: thin solid black"|0
!style="background-color: lightcoral; border: thin solid black"|0
!style="background-color: lightcoral; border: thin solid black"|0
!style="background-color: lightcoral; border: thin solid black"|0
!style="background-color: lightcoral; border: thin solid black"|0
!style="background-color: lightcoral; border: thin solid black"|0
!style="background-color: transparent; border: none"|&nbsp;=&nbsp;<tex>\pm\infty</tex>
|-
|style="border: none"|
|colspan=2 style="border: none; border-left: 1px solid gray; text-align: left"|14
|colspan=3 style="border: none; border-right: 1px solid gray; text-align: right"|10
|style="border: none"|
|colspan=5 style="border: none; border-left: 1px solid gray; text-align: left"|9
|colspan=5 style="border: none; border-right: 1px solid gray; text-align: right"|0
|}
 
Получить бесконечность можно при переполнении и при делении ненулевого числа на ноль. Бесконечность при делении разработчики определили исходя из существования пределов, когда делимое и делитель стремиться к какому-то числу. Соответственно, <tex>\frac{c}{0}=\pm\infty</tex> (например, <tex>\frac{7}{0}=+\infty</tex>, а <tex>\frac{-7}{0}=-\infty</tex>), так как если делимое стремиться к константе, а делитель к нулю, предел равен бесконечности. При <tex>\frac{0}{0}</tex> предел не существует, поэтому результатом будет NaN.
101
правка

Навигация