Блок округления

Автор Kach, 21 сентября 2016, 12:10:41

« назад - далее »

Kach

   Здравствуйте, столкнулись с такой проблемой: блок округления периодически выдает не корректные значения.

mike

Все правильно выдает.

Если не вдаваться особо в теорию:
Вы производите операцию округления вещественного числа до десятой.
Внутреннее представление вещественных чисел в 8и битных контроллерах ограничено 3 или 4 байтами (в зависимости от реализации математической библиотеки, которая производит вычисление).
Следовательно, вещественные числа и результаты операций над ними будут иметь погрешность. Что бы уменьшить погрешность применяют тип данных с двойной точностью, но он не реализован у нас по причинам отсутствия смысла. Одинарной точности вполне достаточно для задач, на которые рассчитаны наши контроллеры.

Значение 24.268 в идеальном округлении до десятой должно быть 24.3, но с учетом погрешности вычисления получается 24.2999

Более подробно об этих явлениях знает Google и Yandex