преоброзование в число с точкой

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
admsasha
Сообщения: 5
Зарегистрирован: 21 сен 2004, 08:56

Код: Выделить всё

int main ()
{
long a;
char b[100];
a=6/2.5;
sprintf(b,"%i \n",a);
printf("%s",b);

}
ответ "2", т.е. без точки, как преоброзовать с точкой ?
versus
Сообщения: 45
Зарегистрирован: 12 май 2004, 01:37

как преобразовать с точкой?
спецификацию к *printf почитать

Код: Выделить всё

int main () 
{ 
long a; 
char b[100]; 
a=6/2.5; 
sprintf(b,"%.2f \n",a); /* печать с двух знаков после точки */
printf("%s",b); 

}
Kolinus
Сообщения: 449
Зарегистрирован: 23 авг 2004, 14:02
Откуда: Минск

/ - при целом типе даст целую часть.
Поэтому надо использовать тип double или float для а.
В SAD - все в SAD.
Hup
Сообщения: 207
Зарегистрирован: 05 мар 2004, 05:31
Откуда: Владивосток
Контактная информация:

В строку...
Converts a floating-point value to a string, which it stores in a buffer.

char *_gcvt(
double value,
int digits,
char *buffer
);
Parameters
value
Value to be converted.
digits
Number of significant digits stored.
buffer
Storage location for result.
Return Value
_gcvt returns a pointer to the string of digits. There is no error return.
Пример:

Код: Выделить всё

char Bf[20];
double VAL = 1.234; 
gcvt(VAL,5,Bf);
В число...
Например:

Код: Выделить всё

double GetDlgItemDouble(HWND hDlg, int id)
{
    TCHAR *pEnd;
    TCHAR szItemText[20];
    GetDlgItemText(hDlg, id, szItemText, 20);
    return strtod(szItemText, &pEnd);
}
Усложнять - легко, упрощать - сложно
Ответить