Пожалуйста, не блокируйте рекламу!

0 Пользователей и 1 Гость просматривают эту тему.

*

Оффлайн paradize

  • ***
  • 159
  • Репутация: +6/-0

Test

На примере сортамента металла - под 9 работает нормально - в 10-ке выдает ошибки в мастер скрипте.
Ошибки - проблемы с точностью вычислений - это когда операторы = или <>  и тип данных real (numeric) или строка. Строка кода if a<>0 then (где а-габаритный размер объекта - длина) вызывает злополучную ошибку. Учитывая что функции работы со строками и действ.числами не менялись со времен царя Гороха и давно уже не соответсвуют требованиям - вопрос что делать. Можно
перебить if a=90 then в if (a-90)<0.0001 and (a-90)>-0.001 then  и т.д но не понял самой причины.


С уважением, Сергей.
« Последнее редактирование: Июня 10, 2007, 15:17:47 от Valery W »

*

Оффлайн macksim

  • **
  • 30
  • Репутация: +6/-0
Привет.
Причина заключается в работе с плавающей точкой во ВСЕХ версиях GDL.
Real Number - это число с плавающей точкой.

Решение предложено верное, но можно написать аккуратнее, например:
Мастер-скрипт
EPS = 0.0001
В других скриптах
if abs (a - 90) < EPS then
...
endif
« Последнее редактирование: Апреля 13, 2008, 19:45:47 от Valery W »

 

Похожие темы

  Тема / Автор