• Viernes 8 de Noviembre de 2024, 08:05

Autor Tema:  Como Converir Un Float A Una String?  (Leído 1723 veces)

ifmaster

  • Miembro activo
  • **
  • Mensajes: 51
    • Ver Perfil
Como Converir Un Float A Una String?
« en: Martes 15 de Agosto de 2006, 18:28 »
0
Hola, e estado buscando por ahi la forma de convertir un float a una string pero no lo consigo ><, lo que yo quiero es lo siguiente:

std::string s = "Float: ";
float f = 12.3456;

s += f;

Y que el resultado de la string imprimida por pantalla sea:

Float: 12.3456

Necesito hacerlo con la string de stl y ya e probado un monton de cosas pero no lo consigo, me podeis ayudar?
Gracias de antemano.
Salu2

ifmaster

  • Miembro activo
  • **
  • Mensajes: 51
    • Ver Perfil
Re: Como Converir Un Float A Una String?
« Respuesta #1 en: Martes 15 de Agosto de 2006, 18:57 »
0
E encontrado una forma, pero me parece un poco "tocha" para la tonteria que es, funciona, pero si alguien sabe de alguna funcion de la string o alguna funcion que me aga la conversion... mejor xD

Pongo aqui lo que e echo:
Tengo dos funciones:

std::string intToString(int number)
{

std::vector <char> number_digits;

do
{
int temp_number = number / 10;
number_digits.push_back(number % 10);

if (temp_number == 0)
break;

number /= 10;
}
while(true);

std::string number_string;

number_string.resize(number_digits.size());
   
int mark = number_digits.size() - 1;

for (size_t i = 0; i < number_digits.size(); i++)
{
number_string = number_digits[mark] + '0';
mark--;
}

return number_string;
}

Esta primera funcion ya te la tenia echa y convierte un entero a una string, aqui va la segunda y al que me quiero ahorrar de alguna forma:

std::string floatToString(float number, int decimals)
{
int first_number = 0;
int second_number = 0;
std::string number_string;

first_number = number / 1;
   
number_string = intToString(first_number);
int count = number_string.size();
number_string += '.';

int i = 0;
float current_number = number;
   
while (i < decimals)
{
current_number *= 10;
std::string s_temp = intToString(current_number);
number_string += s_temp[count];
count++;
i++;
}
   
return number_string;
}

Funcionan bien, pero me parecen muy tochas, espero que alguien pueda echarme una mano, gracias nuevamente.

fuhrer

  • Miembro MUY activo
  • ***
  • Mensajes: 329
  • Nacionalidad: mx
    • Ver Perfil
    • http://admin.busquenoseninternet.com
Re: Como Converir Un Float A Una String?
« Respuesta #2 en: Martes 15 de Agosto de 2006, 21:27 »
0
Hola, que tal.

Podrias utilizar la función sprintf, lo que te hace esta es guardar en una cadena lo que esta en el sprintf, la sintaxis es similar a la de printf.

Espero te sirva.

Hasta luego.

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: Como Converir Un Float A Una String?
« Respuesta #3 en: Miércoles 16 de Agosto de 2006, 00:06 »
0
Código: Text
  1.  
  2. float numero = 12.3456;
  3.  
  4.  

Con sprintf:

Código: Text
  1.  
  2. #include &#60;iostream&#62;
  3. #include &#60;cstring&#62;
  4.   ...
  5.  
  6.   char cadenaC[ 128 ];
  7.   sprintf( cadenaC, &#34;Float: %.4f&#34;, numero );
  8.   std::string s( cadenaC );
  9.   std::cout &#60;&#60; &#34;La cadena es: &#34; &#60;&#60; s &#60;&#60; std::endl;
  10.  
  11.  

Con streams de strings (recién le estoy echando un vistazo):
Código: Text
  1.  
  2. #include &#60;iostream&#62;
  3. #include &#60;sstream&#62;
  4.   ...
  5.  
  6.   std::ostringstream ostr;
  7.  
  8.   ostr &#60;&#60; numero;
  9.   std::string s = &#34;Float: &#34;;
  10.   s += ostr.str();
  11.  
  12.   std::cout &#60;&#60; &#34;La cadena es: &#34; &#60;&#60; s &#60;&#60; std::endl;
  13.  
  14.  

En ambos casos la salida sería:

Citar
La cadena es Float: 12.3456

Saludos,
JJ (Geo).
La imaginación es el límite.
Hardware & Software | Mexchip

SteelX

  • Miembro MUY activo
  • ***
  • Mensajes: 218
    • Ver Perfil
Re: Como Converir Un Float A Una String?
« Respuesta #4 en: Miércoles 16 de Agosto de 2006, 01:00 »
0
Bueno ya te dijeron muchas formas. de todas maneras aki esta otra

Código: Text
  1.  
  2. #include&#60;iostream&#62;
  3. #include&#60;sstream&#62;
  4.  
  5. void main(){
  6. float f_num=10.999900f;
  7. stringstream floatstring;
  8.  
  9. floatstring&#60;&#60;f_num;
  10. cout&#60;&#60;floatstring.str();
  11.  
  12. system(&#34;pause&#34;);
  13. }
  14.  
  15.  
Inside the code

ifmaster

  • Miembro activo
  • **
  • Mensajes: 51
    • Ver Perfil
Re: Como Converir Un Float A Una String?
« Respuesta #5 en: Miércoles 16 de Agosto de 2006, 01:11 »
0
Muchas gracias a todos por vuestra ayuda, supongo que no me queda otra que utilizar las cadenas de C :P, la verdad es que poca cosa uso de C, y trabajar con  STL es muy comodo, pero bueno, muchas gracias de nuevo.