Арифметика чисел з плаваючою комою

У ЄОМ для запису дійсних чисел, які можуть приймати великий діапазон значень, використовується формат представлення з плаваючою комою:

Рисунок 6.1 – Формат представлення чисел з плаваючою комою

 

Число складається з мантиси, старший розряд якої визначає знак числа, і порядку, для якого також є розряд, що визначає його знак.

Дійсне значення числа у системі числення q даному разі представляється наступним чином: Nq = mqp

Для запису числа з плаваючою комою використовуються так званий “нормалізований запис” – після першого значущого розряду ставиться кома, далі йдуть наступні значущі цифри мантиси, потім записується порядок (основа за ступенем), наприклад:

1,2345 * 1023

У комп’ютерній практиці для позначення порядку прийнято використовувати літеру “e” чи “E”:

1,2345E+23

 

Точність представлення чисел з плаваючою комою визначається кількістю значущих цифр мантиси, а діапазон можливих значень – кількістю цифр порядку.

В залежності від обсягу пам’яті, яка відводиться під зберігання числа, як точність, так і діапазон значень можуть варіюватися:

Single (32 біти) – приймає значення від -3,402823e38 до +3,402823e38 (кількість значущих цифр – 7, у внутрішніх обчисленнях кількість може досягати 9)

Double (64 біти) – приймає значення від -1,79769313486232e308 до +1,79769313486232e308 (кількість значущих цифр мантиси – 15, хоча у внутрішніх обчисленнях їх кількість може досягати 17)

Зазначені типи даних можуть також приймати значення PositiveInfinity та NegativeInfinity, а також NaN – не є числом.

Специфіка обчислень для чисел з плаваючою комою полягає у тому, що при проведенні обчислень необхідно враховувати обмеження форматів представлення чисел, зокрема:

– У результаті виконання обчислень з використанням чисел з плаваючою комою допускається певна погрішність.

– Якщо результатом обчислень має бути ціле число, то його необхідно округлювати для подальшого використання

– Виконувати перевірку на предмет рівності чисел необхідно лише з урахуванням деякої погрішності

– Порядок використання чисел з плаваючою комою у розрахунках може впливати на результат

– Точність з фіксованою кількістю розрядів мантиси породжує нерівномірність розподілу значень, які можна розрізнити (різниця між числами може бути від 10E-15 до 10E+293

– Числа з плаваючою комою не підходять для розрахунків, які мають повертати точний результат (наприклад, фінансових)

9.7. Точність операцій з плаваючою комою

Машинний епсілон – це найменше додатнє число ε таке, що виконується наступна умова: 1 Å ε ≠ 1

Якщо для чисел a і b виконується наступна умова: 1 < a/b < 1 + ε, то ці числа для комп’ютерної програми не будуть розрізнятися (тобто буде виконуватися рівність a =b)

Якщо числа a і b будуть розрізнятися більше, ніж на кількість порядків, рівну значущій кількості цифр у мантисі, то виконання арифметичних операцій додавання і віднімання, у яких ці числа будуть використовуватися одночасно, може призвести до нехтування значенням меншого числа, оскільки в результаті операції вирівнювання порядків всі розряди меншого числа отримають нульове значення