Foros del Web » Programación para mayores de 30 ;) » Java »

Decimal con Coma Flotante a Binario Ayuda!!!

Estas en el tema de Decimal con Coma Flotante a Binario Ayuda!!! en el foro de Java en Foros del Web. Hola... primero que todo no se si esto ya haya sido posteado pero por favor ayudenme... no me manden a buscar xDD.... necesito el algoritmo ...
  #1 (permalink)  
Antiguo 08/08/2009, 17:08
 
Fecha de Ingreso: julio-2008
Mensajes: 92
Antigüedad: 15 años, 9 meses
Puntos: 0
Decimal con Coma Flotante a Binario Ayuda!!!

Hola... primero que todo no se si esto ya haya sido posteado pero por favor ayudenme... no me manden a buscar xDD.... necesito el algoritmo de convertir un decimal con coma flotante a binario en java xD....


muchas gracias ante todo y disculpen las molestias
  #2 (permalink)  
Antiguo 09/08/2009, 03:14
 
Fecha de Ingreso: julio-2009
Mensajes: 64
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Decimal con Coma Flotante a Binario Ayuda!!!

Si lo que quieres es convertir un double a byte[] -- es "imposible". Me explico, el número de dígitos después de la coma (mantisa creo que se llama) puede ser infinito.

La solución podría ser redondear al último dígito significativo y convertir al entero.

Pongamos como ejemplo que lo que quieres convertir es 12,457897986876876786876... pero que solamente te interesan dos dígitos después de la coma.

double d = 12,457897986876876786876;
double dd = d * 100.0; // multiplicamos y obtenemos 1245,7897986876876786876
long s = Math.round(dd); // s = 1246

ahora tu objetivo es convertir este número a binario, esto ya no me acuerdo como se hace, así que saque un ejemplo bueno a mi parecer del Internete:

public static byte[] longToByteArray(long l) {
byte[] bArray = new byte[8];
ByteBuffer bBuffer = ByteBuffer.wrap(bArray);
LongBuffer lBuffer = bBuffer.asLongBuffer();
lBuffer.put(0, l);
return bArray;
}

Ya tienes un array de bytes que puedes enviar donde quieras.

En el otro extremo tienen que saber las consideraciones que has tenido en cuenta, como que tendrán que dividir por 100 (en este caso) para obtener el dato correcto.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:08.