Изменения

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

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

3965 байт добавлено, 22:38, 19 октября 2011
м
Добавил основную информацию о NaN
!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"|0
!style="background-color: lightgreen; border: thin solid black"|0
* <tex>\frac{\left|x\right|}{-0} = -\infty\,\!</tex> (если <tex>x\ne0</tex>)
 
 
=== Неопределенность (NaN) ===
NaN - это аббревиатура от фразы 'not a number'. Специальное представление, этакое псевдочисло, придуманное для того, чтобы арифметическая операция могла всегда вернуть какое-то не бессмысленное значение. В IEEE 754 NaN представлен как число, в котором все двоичные разряды порядка - единицы, а мантисса не нулевая.
 
{|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"|<sup>0</sup>/<sub>1</sub>
!style="background-color: lightcoral; border: thin solid black"|<sup>0</sup>/<sub>1</sub>
!style="background-color: lightcoral; border: thin solid black"|<sup>0</sup>/<sub>1</sub>
!style="background-color: lightcoral; border: thin solid black"|<sup>0</sup>/<sub>1</sub>
!style="background-color: lightcoral; border: thin solid black"|<sup>0</sup>/<sub>1</sub>
!style="background-color: lightcoral; border: thin solid black"|<sup>0</sup>/<sub>1</sub>
!style="background-color: lightcoral; border: thin solid black"|<sup>0</sup>/<sub>1</sub>
!style="background-color: lightcoral; border: thin solid black"|<sup>0</sup>/<sub>1</sub>
!style="background-color: lightcoral; border: thin solid black"|<sup>0</sup>/<sub>1</sub>
!style="background-color: lightcoral; border: thin solid black"|<sup>0</sup>/<sub>1</sub>
!style="background-color: transparent; border: none"|&nbsp;=&nbsp;<tex>NaN</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
|}
 
Любая операция с NaN возвращает NaN. При желании в мантиссу можно записывать информацию, которую программа сможет интерпретировать. Стандартом это не оговорено и мантисса чаще всего игнорируется.
 
'''Как можно получить 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 -->
* [http://ru.wikipedia.org/wiki/%D0%A7%D0%B8%D1%81%D0%BB%D0%BE#.D0.9F.D1.80.D0.B5.D0.B4.D1.81.D1.82.D0.B0.D0.B2.D0.BB.D0.B5.D0.BD.D0.B8.D0.B5_.D1.87.D0.B8.D1.81.D0.B5.D0.BB_.D0.B2_.D0.BF.D0.B0.D0.BC.D1.8F.D1.82.D0.B8_.D0.BA.D0.BE.D0.BC.D0.BF.D1.8C.D1.8E.D1.82.D0.B5.D1.80.D0.B0 http://ru.wikipedia.org/wiki/Число]
* [http://ru.wikipedia.org/wiki/%D0%9E%D1%82%D1%80%D0%B8%D1%86%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%B8_%D0%BF%D0%BE%D0%BB%D0%BE%D0%B6%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BD%D0%BE%D0%BB%D1%8C http://ru.wikipedia.org/wiki/Отрицательный и положительный ноль]
*[http://en.wikipedia.org/wiki/NaN]
*[http://ru.wikipedia.org/wiki/%D0%A7%D0%B8%D1%81%D0%BB%D0%BE_%D0%BF%D0%BE%D0%BB%D0%BE%D0%B2%D0%B8%D0%BD%D0%BD%D0%BE%D0%B9_%D1%82%D0%BE%D1%87%D0%BD%D0%BE%D1%81%D1%82%D0%B8 http://ru.wikipedia.org/wiki/Число_половинной_точности]
*[http://ru.wikipedia.org/wiki/%D0%A7%D0%B8%D1%81%D0%BB%D0%BE_%D0%BE%D0%B4%D0%B8%D0%BD%D0%B0%D1%80%D0%BD%D0%BE%D0%B9_%D1%82%D0%BE%D1%87%D0%BD%D0%BE%D1%81%D1%82%D0%B8 http://ru.wikipedia.org/wiki/Число_одинарной_точности]
101
правка

Навигация