Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Округления с операторами арифметических действий и присваивания

09.01.24 18:40
Re: Округления с операторами арифметических действий и присваивания
 
Grossmutters_G прохожий
в ответ alex445 02.01.24 12:28, Последний раз изменено 09.01.24 19:38 (Grossmutters_G)

Есть алгоритм Кэхэна для суммы ряда (https://en.wikipedia.org/wiki/Kahan_summation_algorithm), сохраняющий более высокую точность при работе с числами с плавающей запятой.

В англ. варианте статьи описан более корректный алгоритм Ноймаера.

В принципе, надо просто написать доп. функцию суммирования чисел по указанным алгоритмам, и тогда результат будет с максимальной точностью, которую возможно получить при использовании чисел в формате с плавающей запятой.

Round надо будет применять уже к результату суммирования.


Если же надо прям "абсолютную" точность, то надо использовать, как уже сказали, decimal или методы нормализации (чтобы не работать с машинным представлением вещественных чисел, так как потеря точности там уже на уровне представления появляется. Она хорошая, погрешность, но все равно есть)

 

Перейти на