Изменения

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

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

150 байт убрано, 22:17, 27 февраля 2012
м
Несколько мелких изменений
<!-- TODO:Абзац ниже нужно перенести в раздел с проблемами чисел -->
При этом лишь некоторые из вещественных чисел могут быть представлены в памяти компьютера точным значением, в то время как остальные числа представляются приближёнными значениями. Попробуйте, скажем, перевести число <tex>0.2</tex> в двоичную систему счисления - получится бесконечная запись <tex>0,(0011)</tex>
<table border=1 CellSpacing="0" CellPadding="2">
<tr><th>Название (IEEE 754)</th><th>Тип (в языке программирования C)</th><th>Диапазон</th><th>Биты мантиссы</th><th>Биты</th></tr>
<tr><td>Half precision</td><td>Нет</td><td>6,10&times;10<sup>-5</sup>..65504</td><td>10+1</td><td>16</td></tr>
<tr><td>Double precision</td><td>double</td><td>1,7&times;10<sup>-308</sup>..1,7&times;10<sup>308</sup></td><td>52+1</td><td>64</td></tr>
<tr><td>Extended precision</td><td>Нет, иногда на некоторых архитектурах long double</td><td>3,4&times;10<sup>-4932</sup>..3,4&times;10<sup>4932</sup></td><td>64+1</td><td>80</td></tr>
</table>
Получить бесконечность можно при переполнении и при делении ненулевого числа на ноль. При этом
<texdpi = "180">$$\frac{x}{0}</tex><tex>=
\begin{cases}
+\infty,&\text{если $x>0$;}\\
-\infty,&\text{если $x<0$.}
\end{cases}
$$
</tex>
|}
В таблице приведены наихудшие результаты тестирования среди всех использованных компиляторов (gcc, icc, xlc) со всеми доступными флагами оптимизации. Исследователи утверждают, что различие среднего случая с худшим незначительно и не превышает десяти.
Поскольку в стандартных форматах (одинарной и двойной точности) денормализованные числа получаются действительно ''очень'' маленькими и практически никак не влияют на результат некоторых вычислений (при этом заметно замедляя их скорость), то иногда они просто игнорируются. При этом используются два простых механизма, получивших называние ''Flush-to-zero'' (''FTZ'') и ''Denormals-are-zero'' (''DAZ''). Первый механизм заставляет операции возвращать ноль, как только становится ясно, что результат будет денормализованным. Второй механизм заставляет операции рассматривать поступающие на вход денормализованные числа как нули. <br/>
101
правка

Навигация