Розрахунки в Excel – межі точності
Розрахунки в Excel – межі точності
Created on Monday, 11 June 2012 22:49 Written by Edward
У цій статті я хотів би поділитися з Вами інформацією про межі точності розрахунків у Microsoft Excel. Ніхто не замислюється, але Excel вважатиме нам не будь-які речі, які ми в нього попросимо. Є обмеження. І про ці обмеження краще знати заздалегідь, щоб уникнути помилок, де вони не очікуються і зовсім неоднозначні.
Ми вже стикалися із системними помилками excel, наприклад, коли система не дораховує таблицю до кінця. Обмеження ж точності, про які я хочу розповісти, - це вже швидше архітектурне обмеження, з яким нам доведеться миритися, але про яке просто необхідно знати будь-якому користувачеві Excel.
У чому суть і як це працює
Microsoft Excel робить розрахунки на основі змінної з плаваючою комою. Це означає, що дані зберігаються у нього в особливому вигляді, а саме у вигляді дробу, де одна цифра стоїть як ціла частина, а решта складають дробову частину. Цей дріб множиться на 10 в n-му ступені.
Наприклад, число 12345 зберігатиметься і оброблятиметься (брати участь у розрахунках) в Excel'і як 1.2345E4 або 1.2345*10^4. Це в цілому правильно, і, здавалося б, нема про що турбуватися. Поки що ви не задумаєте астрономічні розрахунки.
Справа в тому, що загалом у цьому дробі система проігнорує всі цифри після п'ятнадцятого розряду. Дозвольте пояснити на прикладі.
Якщо ввести число 123,456,789,012,345,678.00 в Excel, то після натискання Enter система автоматично перетворює його у себе на 1.23456789012345E17. Що насправді дорівнює 123,456,789,012,345,000.00. Тобто, на 678 відрізняється від оригіналу. Те саме стосується точних дробів. Вони теж обрізатимуться таким чином, щоб загальнечисло розрядів у числі було менше 15. Це обмеження введено як необхідність для того, щоб обмежити непотрібну точність при величезних обчисленнях з поділом або дробовими ступенями (корінням), наприклад моделі дисконтованих грошових потоків при наведенні точно будуть викликати величезну кількість чисел з великою кількістю дробових знаків (особливо, якщо модель наводиться не за роками, а за півріччя, квартали або місяці).
І що?
Передчуючи питання "Та кому взагалі треба рахувати з такою точністю", спробую заперечити.
По-перше, є фізики, астрономи та інші, яким, мабуть, доведеться відмовитися від Excel на користь MathCAD через це погане обмеження.
По-друге, і простим офісним працівникам є про що хвилюватися. Так, ми зазвичай не використовуємо Excel для розрахунків з квадрильйонами (якщо ми не живемо в Зімбабве, звичайно). Але нам треба бути дуже обережними під час вибору типу змінної.
приклад. Номер рахунку в банках України - двадцятизначний. Якщо спробувати забити його в числове поле, то ви втратите останні п'ять цифр (замість них будуть нулі). Неприємний вийде сюрприз, правда? Ваша компанія може використовувати довгі номенклатурні номери. Знову ж таки, не хотілося б втратити кілька цифр наприкінці. КБК (код бюджетної класифікації) не зберігається? Все про те ж - плаває кома.
Як уникнути помилки
Щоб уникнути цих помилок, достатньо змінити поле на текстове (мало, кому потрібно робити розрахунки, скажімо, з номерами банківських рахунків - множити, ділити, складати, віднімати, зводити в ступінь.)