Крупнейшая представимая ошибка с плавающей запятой / Крошечная ошибка в «Что должен знать каждый компьютерщик об арифметике с плавающей запятой». - PullRequest
1 голос
/ 27 мая 2011

Я полагаю, что в статье "Что должен знать каждый компьютерщик об арифметике с плавающей запятой" есть маленькая ошибка.

утверждает, что

Менее распространенная ситуация заключается в том, что действительное число выходит за пределы диапазона, то есть его абсолютное значение больше, чем
http://img219.imageshack.us/img219/7396/screenshot2011052714105.png http://img219.imageshack.us/img219/7396/screenshot2011052714105.png.

Это почти точно, максимальное представимое число с плавающей запятой немного меньше этого, а действительное число выходит за пределы диапазона, если оно больше
http://img707.imageshack.us/img707/9236/screenshot2011052714045.png http://img707.imageshack.us/img707/9236/screenshot2011052714045.png

правый

1 Ответ

1 голос
/ 27 мая 2011

Меня не интересуют изображения, поэтому я напишу b для "beta" и m для "e_max".

Так, скажем, b - это основание, p - точность, а m - максимальный показатель.

Тогда я думаю, что вы хотите выражение:

(1 - b^(-p)) * b^m

Например, для базы 10 с 4 цифрами точности и максимальным показателем 12 это дает:

.9999 * 10^12

... что правильно.

Обратите внимание, что это не совсем верно для плавающей запятой IEEE, потому что там начальный бит "1" неявен. И я смутно припоминаю некоторые странности, когда показатель степени равен единице.

...