Страница 3 из 3

Re: Теория. Работа с размерностями знач. в переменных програ

Добавлено: 08.09.2016 12:36:43
Wicked
В свое время для диплома делал много расчетов, реализовывал похожий механизм с целью вывода и проверки размерностей. Основная идея базируется на Пи-теореме https://ru.wikipedia.org/wiki/%D0%9F%D0%B8-%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0. Любая физическая величина выражается через произведение 7-ми базовых физический величин в рациональных степенях. Реализация простая:

Код: Выделить всё

type
  TUnitValue = record
     Value: float;
     Unit: TBaseUnit;
  end;

  TBaseUnit = record // в системе СИ
     L: TRational;
     M: TRational;
     ....
    J: : TRational;
  end;
 

Следствие: сложение/умножение величин с размерностями возможны при по элементном равенстве "Unit". Умножение/Деление размерности производится поэлементно.
Реализуется перегрузка арифметический операций. Добавляются проводные величины из СИ или СГС (а также приставки(Мега, Кило и т.д.), при оформлении вывода значение Unit сравнивается со значением в базе и форматируется вывод.
Больше информации https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D0%B6%D0%B4%D1%83%D0%BD%D0%B0%D1%80%D0%BE%D0%B4%D0%BD%D0%B0%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D0%B5%D0%B4%D0%B8%D0%BD%D0%B8%D1%86
А так же ГОСТ 8.147-2002 Государственная система обеспечения единства измерений. ЕДИНИЦЫ ВЕЛИЧИН
К сожалению мои исходники канули в бездну, но на сорсфордже можно найти много схожих реализаций и размерностей и рациональных чисел. Помниться, в JEDI есть что то подобное.

Re: Теория. Работа с размерностями знач. в переменных програ

Добавлено: 08.09.2016 19:40:00
Sharfik
Спасибо, посмотрю.

Re: Теория. Работа с размерностями знач. в переменных програ

Добавлено: 13.09.2016 10:24:02
azsx
оффтопик
Фатальные ошибки двоичной арифметики при работе с числами с плавающей точкой
https://habrahabr.ru/post/309812/

Re: Теория. Работа с размерностями знач. в переменных програ

Добавлено: 25.09.2016 14:42:46
Sharfik
В общем пока так получилось. Пока без функций авто пересчета, просто описание.
https://github.com/pichugin-m/lab_IMDataType

Re: Теория. Работа с размерностями знач. в переменных програ

Добавлено: 27.09.2016 12:10:13
zub

Код: Выделить всё

   //Тип строения
   TBuildingType = (
       btUnknow,                    //- Неопределено
       btGround,                    //- Площадка географическая
       btBuilding,                  //- Здание/Строение
       btArea,                      //- Резервное значение
       btFloor,                     //- Этаж/Уровень/Площадка внутри здания
       btRoom,                      //- Комната/Помещение
       btLevel,                     //- Отметка
       btLogicalType,               //- Условный объект
       btSection                    //- Секция
   );

Код: Выделить всё

   //Стадия строительства
   TLookWorkType = (
       lwtNone,                     //- Неопределено
       lwtNew,                      //- Новое
       lwtReconstruction,           //- Реконструкция
       lwtExistent                  //- Сущетвующий
   );

Зачем такие вещи хардкодить? тут нужен какойто рантайм механизм чтоб можно было под свои задачи настроить