Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: точность вычислений на Атмега
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
artic
Здравствуйте.

Господа подскажите баг это компилятора или нет.? Если это норма то как повысить точность вычислений? 05.gif
Компилятор CodeVision, Atmega 168

float A=417.60;
float B=0.01;

При просмотре содержимого переменных через AvrStudio имею А=417.60001; В=0.0099999998;

А если числа будут например 17.60 или 0.1 то все гуд.

Для меня эти несоответствия имеют катастрофические последствия. т.к. при дальнейшей обработке погрешность результата
резко возрастает. Обнаружил сие во время реальной работы софта на мк.
DASM
Обычная точность для флоат. Ваш компилятор double понимает? Сильно подозреваю, что размер дабла равен размеру флоата у вас.. Тогда прикручивайте внешнюю библиотеку двойной точности, иначе никак, float тут не в помощь. Иногда помогает правильная организация (группировка) вычислений
Genadi Zawidowski
Ещё можно перейти на вычисления с фиксированной точкой, испольщуя long (например) для хранения и long long перед перемножением.
Какой диапазон чисел в Вашей задаче?
Для сведения, во float на ARM под мантиссу отдано всего 23 бита. 1 бит под знак. 8 под порядок..
DASM
не только в АРМ. IEEE754 однако
artic
Спасибо . double и float на этом компиляторе одно и тоже. 23 бита маловато будет для мантисы. Попробую организовать вычисления с фиксированной точкой.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.