Mostrar un numero float en un MessageBox
Hola amigos, tengo un problema, quiero mostrar en un MessageBox un número en coma flotante, pero no se como hacerlo, e intentado transformarlo a string con el API wsprintf, pero no convierte numeros en coma flotante, y lo toma como si fuera un número entero, la pregunta es:
¿cómo convertir un float a string?
PD: Doy las gracias por adelantando a quien se tome la molestia de contestarme.
mi correo es: [email protected]
¿cómo convertir un float a string?
PD: Doy las gracias por adelantando a quien se tome la molestia de contestarme.
mi correo es: [email protected]
En efecto, ignoro la razón por la que en el repertorio de formatos de wsprintf (la versión UNICODE de sprintf) se ha "eliminado" la posibilidad de trabajar con números en coma flotante. En otras palabras,
float fNum = 0.3;
WCHAR bDestino[10];
wsprintf(bDestino, "%f", fNum);
NO FUNCIONA!!!
En cambio, sí lo hacía perfectamente:
float fNum = 0.3;
TCHAR bDestino[10];
sprintf(bDestino, _T("%f"), fNum);
Para aquellos que usen MFC, queda una única solución posible, a través de la clase CString y su mé todo "format". El siguiente códico funciona perfectamente incluso en la vaersión UNICODE:
float fNum = 0.3;
WCHAR bDestino[10];
CString Texto;
Texto.format(_T("%f"), fNum);
wsprintf(bDestino, "%s", Texto);
Saludos
float fNum = 0.3;
WCHAR bDestino[10];
wsprintf(bDestino, "%f", fNum);
NO FUNCIONA!!!
En cambio, sí lo hacía perfectamente:
float fNum = 0.3;
TCHAR bDestino[10];
sprintf(bDestino, _T("%f"), fNum);
Para aquellos que usen MFC, queda una única solución posible, a través de la clase CString y su mé todo "format". El siguiente códico funciona perfectamente incluso en la vaersión UNICODE:
float fNum = 0.3;
WCHAR bDestino[10];
CString Texto;
Texto.format(_T("%f"), fNum);
wsprintf(bDestino, "%s", Texto);
Saludos
Has de emplear la instruccion de punto flotante FBSTP, que convierte a un numero BCD de 18 digitos y lo almacena en la direccion de memoria que figura en el operando; (solo tiene uno).
Una vez que lo tengas en ese campo lo conviertes a cadena ASCI y lo pasas a la funcion MessageBox.
Por si no lo sabes BCD, que significa Decimal Codificado en Binario es un formato de 2 digitos por byte, lo que se conoce como "campo empaquetado", terminologia IBM y del lenguage COBOL; de ahi que la maxima capacidad sean los 18 digitos, mas el bit de signo y se pierden 7 bits.
Espero que te ayude, un saludo, Emilio.
Una vez que lo tengas en ese campo lo conviertes a cadena ASCI y lo pasas a la funcion MessageBox.
Por si no lo sabes BCD, que significa Decimal Codificado en Binario es un formato de 2 digitos por byte, lo que se conoce como "campo empaquetado", terminologia IBM y del lenguage COBOL; de ahi que la maxima capacidad sean los 18 digitos, mas el bit de signo y se pierden 7 bits.
Espero que te ayude, un saludo, Emilio.
