Как победить погрешности вычилений ?
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как победить погрешности вычилений ?

Как победить погрешности вычилений ?

Ответ
Поиск в этой теме
Непрочитано 21.04.2011, 16:23 #1
Как победить погрешности вычилений ?
swkx
 
Регистрация: 22.01.2010
Сообщений: 311

Подскажите, как обойти вот такую неприятную штуку:

X1 = 235.423 - координата X 1-й точки
X-UG = 235.423 - координата X 2-й точки

Между тем в программе выражение (> X1 X-UG) оказывается истинным ((((
На картинке всё видно.

Что делать ?

Миниатюры
Нажмите на изображение для увеличения
Название: Debug.JPG
Просмотров: 95
Размер:	18.3 Кб
ID:	58083  

Просмотров: 2835
 
Непрочитано 21.04.2011, 16:32
#2
Лиспер


 
Регистрация: 11.10.2010
Сообщений: 979


luprec поставь "побольше"
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Непрочитано 21.04.2011, 16:36
#3
KSI


 
Регистрация: 19.03.2004
Калининград
Сообщений: 1,842


А каким путём получаются X1 и X-UG?
KSI вне форума  
 
Непрочитано 21.04.2011, 16:37
#4
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,335


делать так

Код:
[Выделить все]
 (< (- X1 X-UG) 0.0001)
Sleekka вне форума  
 
Автор темы   Непрочитано 21.04.2011, 17:00
#5
swkx


 
Регистрация: 22.01.2010
Сообщений: 311


Координаты из (entget) берутся: (assoc 10 ..., (assoc 11 ...
swkx вне форума  
 
Непрочитано 21.04.2011, 17:39
#6
KSI


 
Регистрация: 19.03.2004
Калининград
Сообщений: 1,842


swkx, в entget считываются координаты с точностью 0.00000001. А отображает с точностью 0.001.
KSI вне форума  
 
Непрочитано 21.04.2011, 18:03
#7
Нитонисе


 
Регистрация: 05.11.2009
Сообщений: 4,360


Сравнивать числа с десятичной частью - напрямую нельзя. Это надо делать по типу того, как предложено в #4, только брать абсолютные значения координат, без учета знака.
Нитонисе вне форума  
 
Автор темы   Непрочитано 21.04.2011, 18:05
#8
swkx


 
Регистрация: 22.01.2010
Сообщений: 311


Да вроде всё это известно, пробовал и luprec до 8 увеличить, и с допусками возился, толку 0 (
Это две точки вертикального отрезка, с любой точностью отображаются абсолютно одинаковые координаты X, а программа не верит ((
swkx вне форума  
 
Непрочитано 21.04.2011, 20:08
#9
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Сообщение от swkx Посмотреть сообщение
Подскажите, как обойти вот такую неприятную штуку:

X1 = 235.423 - координата X 1-й точки
X-UG = 235.423 - координата X 2-й точки
Сначала проверить на равенство чисел с допуском (1e-9), а затем на меньше/больше или как в #7
Код:
[Выделить все]
(equal X1 X-UG 1e-9)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 21.04.2011, 21:38
#10
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


можно и так:
Код:
[Выделить все]
 (< X1 (+ X2 1e-9))
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны.
/Сунь Цзы/
Елпанов Евгений вне форума  
 
Автор темы   Непрочитано 21.04.2011, 22:43
#11
swkx


 
Регистрация: 22.01.2010
Сообщений: 311


Спасибо всем, разобрался.
swkx вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как победить погрешности вычилений ?



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помощь с лиспом не могу победить полилинию void2005 LISP 16 28.12.2010 09:40
AutoCAD 2005: возможно ли победить глюк с невозможностью разрезать тело? GthWolf AutoCAD 3 03.06.2009 19:10
Бредовые результаты или погрешности РС EUDGEN Расчетные программы 253 16.12.2008 14:26
Подскажите как победить PGP Shweller AutoCAD 1 21.02.2007 12:20
Как победить этот глюк? Valery AutoCAD 2 11.03.2005 07:53