2015-09-27 3 views
0

В точности в одной точке имеется значение 23 бит, дающее целочисленный диапазон (если мы только сохраняем дискретное целочисленное значение) до 2^24. Показатель - 8 бит, дающий диапазон до 2^127. При больших значениях величин существует точка, в которой они начинают терять значимые цифры из значения/мантиссы.что называется, когда число с плавающей запятой больше его точности?

Это означает, что число, например (2^32 + 2^8):
0x100000100
0b100000000000000000000000100000000
будет храниться просто как:
показателя 0b00100000
мантиссы/мантиссы 0b00000000000000000000000 (1 impled бит)
и потерять 256 от его точности.

Это, похоже, противоположно так называемым «ненормальным» номерам. По сути, диапазон чисел, хранящихся как целое число в значении, намного меньше, чем диапазон чисел, которые могут быть сохранены при учете экспоненты. Итак, как только вы доберетесь до 2^24, вы начнете терять информацию (возможно, я ошибаюсь в стандарте)! Это кажется противоположным тому, что происходит в субнормальном диапазоне, когда информация теряется, когда имеется значимое значение, но с меньшим показателем, чем 2^-127

Я пропустил что-то в своем понимании стандарта IEEE754?
Если нет, то, что этот сценарий называется, когда большие величины величин теряют точность (что кажется противоположным субнормальным, возможно, «сверхъестественным»)?
И для обеспечения точности следует ограничить все числа с плавающей запятой до - (10^7) < x < 10^7?

EDIT Обновленные номера от 100 000,010, я также добавил больше языка, чтобы объяснить свое понимание.

EDIT 2 @Weather Vane и является правильным. Точка точности с плавающей запятой состоит в том, что она теряет точность в дробном масштабе, как только мы начинаем увеличивать величину, это начинает влиять на целочисленную шкалу, когда величина увеличивает точку радиуса за конец знака
0,0000000000000000000001 -> -> 10000000000000000000000.0 Я могу понять, почему показатель степени намного больше, чем значение для представления наименьших чисел с максимальной возможной точностью, но для больших чисел величин существует целый класс чисел, которые теряют информацию в более чем дробном масштабе как только мы выйдем за пределы 23 сиг-фига в бинай. Я хочу знать, что они называются, если у них даже есть имя, например. «супер нормальный»?

+0

Пожалуйста, используйте двоичный или шестнадцатеричный для значения «100 000,010», иначе вы будете совершенно смущены. Бинарные представления с плавающей запятой не направлены на сохранение десятичных цифр. 10 могут быть потеряны при преобразовании значения в одноточную или не могут быть потеряны или более 10 могут быть потеряны. –

+0

Я понимаю, но информация будет потеряна только в том случае, если мы выйдем за пределы приблизительной 7 достоверной точности фигуры? – lindsaymacvean

+0

Вы ищете слово «округление»? Это единственное, что приходит в голову, чтобы описать ситуацию, в которой вы пытаетесь установить число, которое невозможно представить точно в формате с плавающей запятой. Округление происходит для всех значений, больших или малых, но для целых чисел диапазон -2^24 <= x <= 2^24 является безопасным, да (то есть [-16777216 ... 16777216]) –

ответ

2

Название того, что происходит, когда не все цифры действительного числа могут быть представлены в формате с плавающей запятой, просто «округляются».

Случай представления целых чисел является чем-то особенным, потому что в типичном формате с плавающей запятой все мелкие целые числа могут быть представлены точно, и, в частности, ни одно целое не слишком близко к нулю, чтобы быть представленным точно.

Однако, поскольку вопрос относится к субнормальным числам, в целом правильнее думать о том, что двойник попадает в субнормальную территорию, переполненную. Один из способов взглянуть на это состоит в том, что эффективная точность составляет 24 бита по всему нормальному диапазону чисел IEEE 754 с одной точностью, и эта точность сужается, когда числа слишком близки к нулю (субнормальный диапазон), а точность уменьшается до 0 бит сразу после переполнения (+ inf и -inf).

Поскольку речь идет о представлении целых чисел (см комментарии), в одинарной точности IEEE 754 с любым целым числом х таким образом, что -2 < < = х = 2 является безопасным для представления (то есть, [ -16777216 ... 16777216]). 16777217 - наименьшее положительное целое число, которое не может быть представлено точно в одной точности (правило «ближайшая-четная» означает, что оно округляется до 16777216.0).

Плавающая точка решает более общую задачу представления некоторых действительных чисел, которые не являются целыми числами, и некоторые действительные числа, которые больше максимального целого числа, до которого представлены все целые числа (здесь 16777216), все с почти равномерная относительная точность (не менее 1/2 точность).

+0

2^24 <= x <= 2^24 точно такое же, как x = 2^24 – CoffeeandCode

+0

Округление является следствием рассматриваемого термина, т. Е. Тот факт, что, например, одномерный поплавок не может содержать 'pi 'в 30 цифрах, ИМО. Как вы это называете? Я голосую за «потерю точности». –

+0

@CoffeeandCode: Отредактировано. Теперь это имеет смысл.

Смежные вопросы