ADN Open CIS
Сообщество программистов Autodesk в СНГ

24/04/2016

Форматирование плавающего числа в строку

В ObjectARX для конвертации плавающего числа в строку используется функция acdbRToS. Эта функция также заботится о преобразовании строки в нужный формат ("Архитектурные", "Десятичные", "Инженерные", "Дробные" и "Научные"), как показано в коде ниже.

Код - C++: [Выделить]
  1. void convertDoubleToString()
  2. {
  3.     ACHAR valStr[50];
  4.     //-1 использует текущие единицы базы данных чертежа
  5.     int unit = -1;
  6.     // точность – 5 знаков после запятой
  7.     int prec = 5;
  8.     acdbRToS(15.20024, unit, prec, valStr);
  9.  
  10.     acutPrintf(_T("плавающее: %s\n"), valStr);
  11.     // Для научного используем 1
  12.     unit = 1;
  13.     acdbRToS(15.20024, unit, prec, valStr);
  14.     acutPrintf(_T("Научное : %s\n"), valStr);
  15.  
  16.     // Для десятичного представления используем 2
  17.     unit = 2;
  18.     acdbRToS(15.20024, unit, prec, valStr);
  19.     acutPrintf(_T("Десятичное  : %s\n"), valStr);
  20.  
  21.     // Для инженерного используем 3
  22.     unit = 3;
  23.     acdbRToS(15.20024, unit, prec, valStr);
  24.     acutPrintf(_T("Инженерное : %s\n"), valStr);
  25.  
  26.     // Для архитектурного используем 4
  27.     unit = 4;
  28.     acdbRToS(15.20024, unit, prec, valStr);
  29.     acutPrintf(_T("Архитектурное : %s\n"), valStr);
  30.  
  31.     // Для дробного используем 5
  32.     unit = 5;
  33.     acdbRToS(15.20024, unit, prec, valStr);
  34.     acutPrintf(_T("Дробное : %s\n"), valStr);
  35. }

 

В AutoCAD .NET API для этой цели используется статический метод:

Код - C#: [Выделить]
  1. Autodesk.AutoCAD.Runtime.Converter.DistanceToString(
  2.     double value,
  3.     DistanceUnitFormat units,
  4.     int precision
  5. );

 

Источник: http://adndevblog.typepad.com/autocad/2012/07/formats-a-floating-point-value-as-a-string.html

 

Автор перевода: Александр Ривилис

Обсуждение: http://adn-cis.org/forum/index.php?topic=7055

Опубликовано 24.04.2016