Исчезновение порядка: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[отпатрулированная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
м робот добавил: ko:언더플로
Нет описания правки
 
(не показано 13 промежуточных версий 10 участников)
Строка 1: Строка 1:
'''Исчезновение порядка''' или '''антипереполнение''' — ситуация, когда результат операции с [[плавающая запятая|плавающей запятой]] становится настолько близким к нулю, что порядок числа выходит за пределы разрядной сетки.
'''Исчезновение порядка''', '''потеря значимости''' или '''антипереполнение''' ({{lang-en|floating-point underflow}}) — ситуация, когда результат операции с [[плавающая запятая|плавающей запятой]] становится настолько близким к нулю, что порядок числа выходит за пределы разрядной сетки.


Например, в арифметике [[Число одинарной точности|одинарной точности]] (с минимальным числом 1,2·10<sup>&minus;38</sup>) к исчезновению порядка приведёт операция 10<sup>&minus;20</sup>·10<sup>&minus;30</sup>&nbsp;=&nbsp;10<sup>&minus;50</sup>.
Например, в арифметике [[Число одинарной точности|одинарной точности]] (с минимальным нормализованным числом 1,2·10<sup>−38</sup>) к исчезновению порядка приведёт операция 10<sup>−20</sup>·10<sup>−30</sup>&nbsp;=&nbsp;10<sup>−50</sup>.


В большинстве случаев система просто выдаёт результатом 0, но иногда желательно более чётко отличать ненулевые числа от нуля. Например, если в дальнейшем результат используется в качестве делителя, то это поможет избежать [[деление на ноль|деления на ноль]]. Использование [[Денормализованные числа|денормализованных чисел]] позволяет обнулять старшие биты мантиссы, имитируя этим уменьшение порядка сверх возможностей разрядной сетки, и полностью исключает антипереполнения типа <math>a \pm b</math>. Правда, происходит это за счёт уменьшения количества значащих цифр, а значит точности числа. Впрочем, даже введение [[Денормализованные числа|денормализованных чисел]] качественно не меняет ситуацию: после того, как все биты мантиссы будут обнулены, результатом всё же станет 0. Так, в приведённом примере результат нельзя представить даже [[Денормализованные числа|денормализованным числом]], поскольку минимальное положительное [[Денормализованные числа|денормализованное число]] одинарной точности — примерно 1.4·10<sup>−45</sup>, и результатом будет 0.
Заманчиво результатом такой операции сделать 0; но это чревато, например, [[деление на ноль|делением на ноль]]. В зависимости от настроек, система в таком случае может либо выдать ошибку (установить бит состояния, вызвать [[прерывание]], возбудить [[обработка исключений|аварийную ситуацию]] и т. д.), либо проигнорировать антипереполнение и вернуть 0 в качестве результата.


== См. также ==
== См. также ==


* [[Арифметическое переполнение]]
* [[Арифметическое переполнение]]
* [[Денормализованные числа]]


{{compu-stub}}
{{compu-stub}}
{{нет источников|дата=2012-06-20}}

[[Категория:Арифметика с плавающей запятой]]
[[Категория:Арифметика с плавающей запятой]]

[[de:Arithmetischer Unterlauf]]
[[en:Arithmetic underflow]]
[[it:Arithmetic underflow]]
[[ko:언더플로]]

Текущая версия от 11:07, 9 мая 2022

Исчезновение порядка, потеря значимости или антипереполнение (англ. floating-point underflow) — ситуация, когда результат операции с плавающей запятой становится настолько близким к нулю, что порядок числа выходит за пределы разрядной сетки.

Например, в арифметике одинарной точности (с минимальным нормализованным числом 1,2·10−38) к исчезновению порядка приведёт операция 10−20·10−30 = 10−50.

В большинстве случаев система просто выдаёт результатом 0, но иногда желательно более чётко отличать ненулевые числа от нуля. Например, если в дальнейшем результат используется в качестве делителя, то это поможет избежать деления на ноль. Использование денормализованных чисел позволяет обнулять старшие биты мантиссы, имитируя этим уменьшение порядка сверх возможностей разрядной сетки, и полностью исключает антипереполнения типа . Правда, происходит это за счёт уменьшения количества значащих цифр, а значит точности числа. Впрочем, даже введение денормализованных чисел качественно не меняет ситуацию: после того, как все биты мантиссы будут обнулены, результатом всё же станет 0. Так, в приведённом примере результат нельзя представить даже денормализованным числом, поскольку минимальное положительное денормализованное число одинарной точности — примерно 1.4·10−45, и результатом будет 0.