Округление при вычислениях
Добавлено: 29 ноя 2021, 01:07
Уважаемые знатоки, обращаюсь к вас со следующим вопросом.
Не знал как правильно назвать пост, но суть такова. Прикрепляю тестовую и скрин кода. Почему-то при вычислениях, если step равняется 0.1, 0.2, 0.3 или 0.4, в конце получается не ноль, а число в E-16 или подобной степени.
Например, шаг = 0,3 - финальный результат -1.11022E-16.
Если же шаг 0,5 и выше - то все нормально, в конце получаю "чистый" ноль.
Но в тоже время, если шаг 0,25 - то все нормально.
Ладно бы были здесь операции деления/умножения, еще бы было более понятно. Но почему в возникают такие проблемы при сложении/вычитании?
И как можно "заставить" все-таки на индикаторе изображать просто ноль, а не отрицательное число из запятой и 15-ю нулями?
Суть в том, что я делаю модуль для симуляции движения мотора. И для пользователя будет странно видеть -1.11022E-16 вместо ноля (например, когда мотор движется на домашнюю позицию).
Можно городить код из сравнением числа с нолем с точностью меньшей чем сам шаг, но хотелось бы более элегантное решение...
Заранее спасибо за советы/объяснения
Не знал как правильно назвать пост, но суть такова. Прикрепляю тестовую и скрин кода. Почему-то при вычислениях, если step равняется 0.1, 0.2, 0.3 или 0.4, в конце получается не ноль, а число в E-16 или подобной степени.
Например, шаг = 0,3 - финальный результат -1.11022E-16.
Если же шаг 0,5 и выше - то все нормально, в конце получаю "чистый" ноль.
Но в тоже время, если шаг 0,25 - то все нормально.
Ладно бы были здесь операции деления/умножения, еще бы было более понятно. Но почему в возникают такие проблемы при сложении/вычитании?
И как можно "заставить" все-таки на индикаторе изображать просто ноль, а не отрицательное число из запятой и 15-ю нулями?
Суть в том, что я делаю модуль для симуляции движения мотора. И для пользователя будет странно видеть -1.11022E-16 вместо ноля (например, когда мотор движется на домашнюю позицию).
Можно городить код из сравнением числа с нолем с точностью меньшей чем сам шаг, но хотелось бы более элегантное решение...
Заранее спасибо за советы/объяснения