Вопросы по системе сквозного проектирования и менеджмента проектов
Исходное сообщение:
Kach, 21.09.2016, 12:10
Блок округления
Здравствуйте, столкнулись с такой проблемой: блок округления периодически выдает не корректные значения.
Ответы:
mike, 21.09.2016, 14:46
Блок округления
Все правильно выдает.
Если не вдаваться особо в теорию: Вы производите операцию округления вещественного числа до десятой. Внутреннее представление вещественных чисел в 8и битных контроллерах ограничено 3 или 4 байтами (в зависимости от реализации математической библиотеки, которая производит вычисление). Следовательно, вещественные числа и результаты операций над ними будут иметь погрешность. Что бы уменьшить погрешность применяют тип данных с двойной точностью, но он не реализован у нас по причинам отсутствия смысла. Одинарной точности вполне достаточно для задач, на которые рассчитаны наши контроллеры.
Значение 24.268 в идеальном округлении до десятой должно быть 24.3, но с учетом погрешности вычисления получается 24.2999
Более подробно об этих явлениях знает Google и Yandex