Надежное округление дробей

Темы связанные с инженерными разработками, но не подходящие в другие ветки форума
Ответить
AlexanderKonoval
developer
developer
Сообщения: 257
Зарегистрирован: 03 янв 2014, 19:37
Версия LabVIEW: 2016
Откуда: Украина, Киев
Контактная информация:

Надежное округление дробей

Сообщение AlexanderKonoval »

Здравствуйте уважаемые коллеги!

Система постоянно работает с дробными числами и часто возникают проблемы с их сравнением в стиле 1!=1 так как на самом деле это 0,999999999999998 != 1,0000000000000000

пробовал я крутить и округлять и так и сяк. И через умножение/разделение на 100, и через перевод в строку-обратно.
Надёжного решения не нашёл. постоянно где-то возникает эта проблема.

На данный момент я использую этот метод, но он всё-равно, как видно из скриншота, не убирает проблему.
DBLrounding.png
DBLrounding.png (6.87 КБ) 3749 просмотров
Как от этого можно избивиться надёжно? постоянно отлавливать баги в работе системы и ставить какие-то костыли/заплатки на проблемных местах уже поднадоело.

Из радикального, как вижу, делать функцию по сравнению дробей, где умножать их на 10/100/1000 и тд в зависимости от необходимой точности, округлять полученное значение и сравнивать инт32, но это не тот выход, который бы хотелось.

заранее спасибо за помощь.
колдооооовствооооо! (С)
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Надежное округление дробей

Сообщение dadreamer »

AlexanderKonoval писал(а):часто возникают проблемы с их сравнением в стиле 1!=1 так как на самом деле это 0,999999999999998 != 1,0000000000000000
А машинный эпсилон использовать не вариант?
http://www.labviewportal.org/viewtopic. ... 525#p66525
Blackman

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

Re: Надежное округление дробей

Сообщение Blackman »

Сравнение DBls c требуемой точностью.
Вложения
Blackman_Approximately Equal.png
Blackman_Approximately Equal.vi
(16.27 КБ) 176 скачиваний
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Надежное округление дробей

Сообщение dadreamer »

Глядя на последний пост, вдруг вспомнил такое:
Floating Point Equal.png
Floating Point Equal.png (10.42 КБ) 3708 просмотров
Floating Point Equal.vi
lv8.0
(6.41 КБ) 174 скачивания
Была бы полезная штука временами, если б не пугающий пост на Лаве: https://lavag.org/topic/16733-floating- ... primitive/
Ответить

Вернуться в «Общие»