24/04/2016
Форматирование плавающего числа в строку
В ObjectARX для конвертации плавающего числа в строку используется функция acdbRToS. Эта функция также заботится о преобразовании строки в нужный формат ("Архитектурные", "Десятичные", "Инженерные", "Дробные" и "Научные"), как показано в коде ниже.
Код - C++: [Выделить]
- void convertDoubleToString()
- {
- ACHAR valStr[50];
- //-1 использует текущие единицы базы данных чертежа
- int unit = -1;
- // точность – 5 знаков после запятой
- int prec = 5;
- acdbRToS(15.20024, unit, prec, valStr);
- acutPrintf(_T("плавающее: %s\n"), valStr);
- // Для научного используем 1
- unit = 1;
- acdbRToS(15.20024, unit, prec, valStr);
- acutPrintf(_T("Научное : %s\n"), valStr);
- // Для десятичного представления используем 2
- unit = 2;
- acdbRToS(15.20024, unit, prec, valStr);
- acutPrintf(_T("Десятичное : %s\n"), valStr);
- // Для инженерного используем 3
- unit = 3;
- acdbRToS(15.20024, unit, prec, valStr);
- acutPrintf(_T("Инженерное : %s\n"), valStr);
- // Для архитектурного используем 4
- unit = 4;
- acdbRToS(15.20024, unit, prec, valStr);
- acutPrintf(_T("Архитектурное : %s\n"), valStr);
- // Для дробного используем 5
- unit = 5;
- acdbRToS(15.20024, unit, prec, valStr);
- acutPrintf(_T("Дробное : %s\n"), valStr);
- }
В AutoCAD .NET API для этой цели используется статический метод:
Код - C#: [Выделить]
- Autodesk.AutoCAD.Runtime.Converter.DistanceToString(
- double value,
- DistanceUnitFormat units,
- int precision
- );
Источник: 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