Документация формулировка по этому вопросу плоха;«Годный к употреблению» является разговорным и не определен.Очевидно, что tiny
подразумевает наименьшее положительное нормальное число.
nextafter
возвращает фактическое следующее представимое значение после нуля, которое ненормальное .
Python не указывает жестко свои свойства с плавающей точкой.Реализации Python обычно наследуют их от базового аппаратного или программного обеспечения, и использование форматов IEEE-754 (но не полное соответствие семантике IEEE-754) является распространенным явлением.В IEEE-754 числа представлены неявным начальным одним битом в значении и 1 до тех пор, пока показатель степени не достигнет своего минимального значения для формата, после чего неявный бит равен нулю вместо одного, а меньшие значения представимытолько уменьшая значение, а не уменьшая показатель.Эти числа с неявным ведущим нулем являются субнормальными числами.Они служат для сохранения некоторых полезных арифметических свойств, таких как x-y == 0
тогда и только тогда, когда x == y
.(Без субнормальных чисел два очень маленьких числа могут отличаться, но их даже меньшее различие может не быть представимым, поскольку оно ниже предела экспоненты, поэтому при вычислении x-y
округляется до нуля, в результате чего код, подобный if (x != y) quotient = t / (x-y)
, получает делениеошибка «на ноль».
Примечание
1 «Значение» - это термин, предпочитаемый экспертами для дробной части представления с плавающей точкой.«Мантисса» является старым термином для дробной части логарифма.Мантиссы являются логарифмическими, а значения - линейными.