Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

ЧаВО от клуба программистов Весельчак У


Здравствуйте, дорогие читатели.

Команда нашего клуба рада сообщить вам, что после продолжительного перерыва мы возобновляем выпуск этой рассылки.
Мы будем публиковать вопросы и ответы, появлявшиеся на нашем форуме в разное время. И приглашаем вас принять участие в обсуждении вопросов посетителей нашего форума!



Раздел ANSI C++

Q:
Не получается сравнить два числа типа double

A:
стандартный прием - задание точности:

Код:
#include
double d1,d2;
double acc=0.00001;//требуемая точность сравнения
...
...
if( fabs(d1-d2) < acc )
{
//операнды равны (с точностью acc)
}
else
{
//убедились, что операнды не равны, здесь можно
//смело сравнивать операторами ">" и "<"
}



Q:
Как задать число знаков после запятой у float при преобразовании в строку?

A:
примеры для разных случаев:

Код:
char sDouble[128]
float d1 = 0.001778;
...
sprintf(sDouble,"%.4f",d1);//4 знака после запятой
...
printf("%.4f", d1);//4 знака после запятой
...
cout< << d1;//4 знака после запятой



Q:
Как динамически задать число знаков после запятой у float при преобразовании в строку?

A:
Если нужно вывести, к примеру, double с 5 знаками после десятичной точки, сначала нужно сформировать строку вида "%.5f", а потом задать ее в качестве спецификации формата
Код:
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);



Q:
Как задать число знаков после запятой у float в функции printf?

A:
В printf в спецификаторе числа разрядов можно поставить символ "*". тогда соответствующий по порядку аргумент будет интерпретирован как число знаков

Код:
printf("%.*f", 2, 3.1415);//выведет 3.14
(для CString::Format символ "*" НЕ работает)



Вы также можете принять участие в составлении FAQ. Посетите раздел форума "Идеи для статей".
Здесь собраны вопросы, ответы на которые не сформулировать в двух словах. Попробуйте свои силы.


А теперь мы прощаемся с вами до следующего выпуска. Будем рады видеть вас на нашем форуме.


В избранное