Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Как перевести из double в CString


Автор: Kobzon 6.12.2004, 20:18
пробовал ecvt но там нули достали не знаю как от них избавиться. Наприр, число 45,256 в строке будет 45,25600000000 и т.д. Как их убрать smile
ПАМАГИТЕ!!!!

Автор: shedon 6.12.2004, 20:21
Код

CString s;
double fData = 45.256;
s.Format("%.3f", fData);

Автор: Guest 6.12.2004, 21:06
А если после запятой не 3 символа?

Автор: shedon 6.12.2004, 21:36
тогда после точки вместо 3 пиши сколько символов тебе надо
"%.3f" 3 - это число символов которое нао отображать после запятой. f означает что число с плавающей точкой.

Автор: Guest 7.12.2004, 12:58
Дак я как раз и не знаю сколько надо отображать после запятой. Число получается в результате арифметических операций, поэтому неизвестно сколько там будет символов smile

Автор: shedon 7.12.2004, 13:08
там всегда, будет одинаковое количество чисел, вопрос какая точность тебе нужна.

Автор: sergejzr 7.12.2004, 13:30
Цитата(shedon @ 7.12.2004, 12:08)
там всегда, будет одинаковое количество чисел, вопрос какая точность тебе нужна.


Вроде надо только нули обрезать smile

Возможно существует стандартная фу-ия для этого...
Нвскидку делаем так:

Код

/*
Код проверен!
При использовании ссылайтесь на www.vingrad.ru
http://vingrad.ru/@sergej.z
*/
#include <stdio.h>
#include "string.h"
const char* doubleToChar_obrezanto(double d)
{
 static char number[25];
 char *begunok;
 //Создадим строку из числа
 sprintf(number,"%lf",d);

 //поставим бегунок наконец слова и перескочим нули задом наперёд :)
 begunok=&(number[strlen(number)-1]);
 while(*(begunok--)=='0')
 begunok[1]=0;
 return number;
}
int main()
{

 double test=25.678000;
 //распечатаем красиво :)
 printf("test %s\n",doubleToChar_obrezanto(test));
 //И как обычно...
 printf("%lf",test);
 return 0;
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)