FAQ:ANSI CPP:динамически задать число знаков после запятой — различия между версиями
Материал из Весельчак У
RXL (обсуждение | вклад) (Ветвление FAQ:ANSI CPP.) |
RXL (обсуждение | вклад) м (→Как динамически задать число знаков после запятой у float при преобразовании в строку?) |
||
Строка 3: | Строка 3: | ||
Если нужно вывести, к примеру, double с 5 знаками после десятичной точки, то сначала нужно сформировать строку вида "%.5f", а потом задать ее в качестве спецификации формата функцииии printf. | Если нужно вывести, к примеру, double с 5 знаками после десятичной точки, то сначала нужно сформировать строку вида "%.5f", а потом задать ее в качестве спецификации формата функцииии printf. | ||
− | < | + | <syntaxhighlight lang="cpp"> |
− | + | char sDouble[128], strFormat[128]; | |
− | + | double d1 = 150.0f; | |
− | + | int nCount;//текущее количество знаков после запятой | |
− | + | nCount = 5; | |
− | + | sprintf(strFormat, "%%.%df", nCount); | |
− | + | //strFormat теперь содержит строку "%.5f" | |
− | + | //форматируем: | |
− | + | sprintf(sDouble, strFormat, d1); | |
− | </ | + | </syntaxhighlight> |
Аналогично, если используется класс CString : | Аналогично, если используется класс CString : | ||
− | < | + | <syntaxhighlight lang="cpp"> |
− | + | CString sDouble, strFormat; | |
− | + | strFormat.Format("%%.%df", nCount); | |
− | + | sDouble.Format(strFormat, d1); | |
− | </ | + | </syntaxhighlight> |
[[Category:FAQ:ANSI CPP]] | [[Category:FAQ:ANSI CPP]] |
Текущая версия на 00:50, 30 июля 2008
Как динамически задать число знаков после запятой у float при преобразовании в строку?
Если нужно вывести, к примеру, double с 5 знаками после десятичной точки, то сначала нужно сформировать строку вида "%.5f", а потом задать ее в качестве спецификации формата функцииии printf.
char sDouble[128], strFormat[128]; double d1 = 150.0f; int nCount;//текущее количество знаков после запятой nCount = 5; sprintf(strFormat, "%%.%df", nCount); //strFormat теперь содержит строку "%.5f" //форматируем: sprintf(sDouble, strFormat, d1);
Аналогично, если используется класс CString :
CString sDouble, strFormat; strFormat.Format("%%.%df", nCount); sDouble.Format(strFormat, d1);