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

Материал из Весельчак У
Версия от 21:32, 28 июля 2008; RXL (обсуждение | вклад) (Ветвление FAQ:ANSI CPP.)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Как динамически задать число знаков после запятой у 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);