nlothik (nlothik) wrote,
nlothik
nlothik

Category:

Компьютеры не умеют считать точно

Это я так, по мере продвижения в своём проекте эмуляции процессора, мысли записываю :) Большинство моих френдов с этим, конечно, уже знакомы.

Компьютеры не умеют считать точно потому, что мы с вами используем десятичную систему, а компьютер -- двоичную. Целые десятичные числа в двоичной системе можно представить точно, но как только дело доходит до чисел дробных -- начинается война и немцы.

В двоичной системе дробная часть записывается как сумма простых дробей с двойкой в разных степенях в знаменателе (1/2, 1/4, 1/8, 1/16, и так далее). Так, число 0.5 -- это 1/2, 0.75 -- это 1/2 + 1/4, а 0.3125 -- это 1/4 + 1/16.

Таким образом можно записать много дробных чисел точно. Много, но не все. Как, например, быть с числом 0.2?

Ну, 1/8 + 1/16 + 1/128 + 1/256 + 1/2048 + 1/4096... но всё равно точно не получится. Получается что-то вроде 0.199999.... то-есть, довольно близкое приближение к 0.2, но всё равно -- есть ошибка. Пускай даже после n-ного знака после запятой -- но она есть. Ситуация точно такая же, как если бы мы попробовали записать в десятичной системе простую дробь 2/3.

Что с этим можно сделать? Компьютер использует больше бит для хранения дробных чисел, чем для обычных. Даже 486 процессор, где 64-битностью не пахло, использует для обычных целых чисел -- 32 бита, а для дробных может использовать все 64. Но этого всё равно в некоторых случаях не хватает. Скажем, для бухгалтера такой точности недостаточно. При миллионе-другом идущих друг за другом расчётов ошибка накопится, достаточная, чтобы изменить значащие цифры. Пускай это даже один цент, бухгалтера разорвёт на части -- очки в одну сторону, галстук в другую -- НЕДОСТАЧА!!!

Поэтому в финансовых приложениях часто дробные числа вообще не используют. Считают в центах/копейках, и только потом, при выводе результатов для человека, добавляют точку на место.
Tags: компьютерное, учёба
Subscribe

  • Ружжо

    Офигительно красивые винтовки британской компании Вестли Ричардс. Как, интересно, они добились такого потрясающего покрытия на прикладах? Это же…

  • Скворцы минус 1

    Подстрелил таки одну падлу, что мне орала под окном. Самец, здоровенный. Фотку подвешивать не буду, ибо кровь-кишки-распидорасило. Но дам ссылку…

  • О птичках

    Скворцы — ЗАМУМИЛИ. У них сейчас как раз пролёт, не-то с юга, не то на юг. Садятся огромным кагалом на дерево прямо напротив моих окон и…

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 2 comments