нулевая точка один в стандарте IEEE 754 - PullRequest
0 голосов
/ 11 декабря 2018

Итак, я изучаю IEEE 754 и у меня есть вопрос

Почему некоторые числа, такие как, например, числа 0,1 и 0,2, не являются значением, которое точно закодировано в стандарте IEEE 754

Ответы [ 2 ]

0 голосов
/ 03 января 2019

@ Эрик уже объяснил основы.Однако при работе с числами с плавающей запятой необходимо учитывать множество других проблем.

Я недавно видел этот пост в блоге по этой теме, в котором есть объяснение двоичных дробей, примеры того, как все происходит.ошибитесь с возможными решениями и внешними ссылками с дополнительной информацией по теме.

https://www.microforum.cc/blogs/entry/1-floating-point-numbers/

0 голосов
/ 11 декабря 2018

IEEE-754 определяет двоичный и десятичный форматы..1 и .2, конечно, представимы в десятичном формате.

В двоичных форматах каждая позиция цифры соответствует степени двойки.Для битов 101.011 позиции соответствуют 4, 2, 1, ½, ¼ и ⅛.Таким образом, 101.011 представляет 1 • 4 + 0 • 2 + 1 • 1 + 0 • ½ + 1 • ¼ + 1 • ⅛ = 4 + 1 + ¼ + ⅛ = 5⅜ = 5,375.Мы можем изменить степени двух, отрегулировав показатель степени (это «плавающая» часть с плавающей запятой; значение числа кратно степени двойки, чтобы переместить эффективную позицию «десятичной запятой»).

.1 нельзя представить, потому что не существует конечного набора степеней двух, сумма которых равна .1.Предположим, у вас есть сумма S степеней двух p 0 , p 1 , p 2 ,… p n , отсортировано по убыванию.Поскольку p n является наименьшей из этих сил, все остальные кратны ей.Это означает, что сумма S является суммой, кратной p n , поэтому она кратна p п .Это означает S = j / 2 k для некоторых целых чисел j и k .Если S = .1, то .1 = j / 2 k , поэтому 2 k = 10 j , а затем 2 k -1 = 5 j .Но если 2 k -1 = 5 j , то 2 k −1 кратно пяти,Это невозможно, так как это степень двойки.Так что S не может быть .1.

...