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.
