FAQ:ANSI CPP:динамически задать число знаков после запятой — различия между версиями

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