Tablora

Tablora · Бібліотека

Збережіть видимими малі десяткові внески

Додайте 1.2 і 0.003 точно й отримайте 1.203. Перевірка зберігає найбільшу кількість знаків після крапки, тож малі доданки ніколи не губляться під час округлення.

Значення з різною кількістю знаків після крапки

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

Перевірка десяткової суми знаходить найбільшу кількість знаків після крапки серед усіх значень і очікуваної суми, зводить до неї кожне значення й додає їх точно. Нічого не округлюється, і результат показується з цією повною точністю.

Точність ураховує й «Очікувана сума». Якщо ввести там 1.20300, кожне число в результаті буде показано з п’ятьма знаками після крапки, хоча в жодному рядку стільки немає.

Додаємо 1.2 і 0.003

У прикладі на сторінці в поле «Одне значення в рядку» введено 1.2 і 0.003, а очікувана сума — 1.203. «Обчислена сума» дорівнює 1.203, «Різниця» — 0.000, тому «Суми збігаються» показує «Так». У результаті три знаки після крапки, бо їх по три і в 0.003, і в очікуваній сумі.

Зверніть увагу: різницю показано як 0.000, а не 0. Усі числа в результаті мають однакову точність, і тому невеликі розбіжності легко помітити.

Як вводити значення різної точності

Округлення — окремий крок

Збереження точності — властивість точної арифметики, а не фінансове правило округлення. Якщо число, з яким ви звіряєтеся, округлено до центів, спершу з’ясуйте, чи округлювало джерело кожен рядок, чи лише підсумок, і самі застосуйте це правило перед порівнянням. Тоді перевірка покаже, чи збігається округлене число.

Нормалізатор чисел поводиться так само з окремими значеннями: він зберігає записані цифри дробової частини, тож 125.00 залишається 125.00, а 0.003 залишається 0.003 і не скорочується.

Вхідні дані

Одне значення в рядку
1.2 0.003
Очікувана сума
1.203

Результати

Обчислена сума
1.203
Різниця
0.000
Суми збігаються
Так