Почему в расчетах поплавков и двойников есть ошибки? - PullRequest
1 голос
/ 07 октября 2011

Мне всегда было интересно, почему поплавки не очень точные, когда компьютеры должны дать точный ответ.Я где-то читал в книге, что лучше сравнивать переменную с числом вокруг желаемого значения, поскольку вычисляемое значение не всегда может быть целым числом, как мы ожидаем.Как машины рассчитывают эти подразделения?Любые ссылки на сайты приветствуются:)

Ответы [ 2 ]

3 голосов
/ 07 октября 2011

Джон Скит упоминает об этом здесь (прокрутите вниз, пока не увидите «двойной d = 0,3;» на слайде): http://msmvps.com/blogs/jon_skeet/archive/2009/11/02/omg-ponies-aka-humanity-epic-fail.aspx

Более подробный ответ здесь: http://download.oracle.com/docs/cd/E19957-01/806-3568/ncg_goldberg.html

0 голосов
/ 07 октября 2011

простой ответ: компьютер использует ограниченное количество цифр для представления числа.

Если вы попытаетесь представить то есть число 1/7 в десятичном виде, это будет 0,14285714 ... и так до бесконечности. То же самое происходит с компьютером, т. Е. Пытается представить число 1/10 (0,1 в десятичном виде) в двоичном виде, что также становится бесконечным рядом.

Поэтому иногда вы не получаете наиболее точное число.

...