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

Работа с параметрами процедур в REAL

Добавлено: 17 Декабрь 2025, 17:14
Игорь Столяров
Всем привет !

Неоднократно поднималась тема передачи данных в параметрах REAL с потерей точности.
Прозвучали конкретные рекомендации. Можно я ещё раз их проговорю и покажу реализацию ?

Предположим мы хотим получить некие данные с точностью 2 и 3 знака после десятичной точки (цена и кол-во).

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

!!! Возвращает форматированное дробное число как строку
NumFormat  Procedure(Real rDigit,Byte bAccuracy = 1)  !,String
dDigit   Decimal(15,3)
  Code  
  Execute bAccuracy
    dDigit = Round(rDigit,.01)   ! 1. Цена
    dDigit = Round(rDigit,.001)  ! 2. Кол-во
  end  
  Return Clip(Left(Format(dDigit,     '@n-_15.' & Choose(bAccuracy,'2','3')     )))
Вроде бы все вызовы в стиле NumFormat(10 / 3) дают ожидаемые значения.
Это правильное решение для работы с параметрами REAL ? Спасибо ! :D