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

Convertir double a int

Estas en el tema de Convertir double a int en el foro de Java en Foros del Web. Hola a todos .. queria saber si existe alguna funcion en especial para convertir lo siguiente. del siguiente numero: (double)11.45787554 lo quiero a esto: 1145787554 ...
  #1 (permalink)  
Antiguo 08/04/2013, 16:30
Avatar de juan_14nob  
Fecha de Ingreso: abril-2010
Mensajes: 552
Antigüedad: 14 años
Puntos: 6
Convertir double a int

Hola a todos .. queria saber si existe alguna funcion en especial para convertir lo siguiente.

del siguiente numero: (double)11.45787554 lo quiero a esto: 1145787554 osea sin el punto.. es posible ?
Yo lo he convertido a int pero me deja los primeros 2 numeros..

miren:

double a = (double) 11.45787554;
int b = (int) a;

// 11.0



Saludos!!!!!
  #2 (permalink)  
Antiguo 08/04/2013, 16:45
Avatar de andrexsos17  
Fecha de Ingreso: enero-2011
Ubicación: Manizales
Mensajes: 169
Antigüedad: 13 años, 2 meses
Puntos: 15
Respuesta: Convertir double a int

Hola @juan_14nob

Lo que te devolvio b es correcto, pues tienes un numero con un gran decimal y pues al convertirlo a int, desaparecen estos. Te recomiendo que tomes el numero lo conviertas a texto, ahi eliminas el punto y despues lo conviertes a integer.

Saludos
__________________
Todo problema es una forma mental que la mente sostiene. Los problemas dejan de existir cuando los olvidamos. Todo problema ha sido creado por la mente y existe mientras la mente lo sostenga.
  #3 (permalink)  
Antiguo 09/04/2013, 15:57
Avatar de henrri  
Fecha de Ingreso: enero-2011
Mensajes: 40
Antigüedad: 13 años, 2 meses
Puntos: 3
Respuesta: Convertir double a int

Otra forma seria multiplicar al double por 10^(cantidad de decimales) y ese resultado castearlo a int.
  #4 (permalink)  
Antiguo 09/04/2013, 16:46
Avatar de andrexsos17  
Fecha de Ingreso: enero-2011
Ubicación: Manizales
Mensajes: 169
Antigüedad: 13 años, 2 meses
Puntos: 15
Respuesta: Convertir double a int

@henrri Gran idea pero no seria aplicable si la cantidad de decimales cambia, que es lo mas común.

Saludos.
__________________
Todo problema es una forma mental que la mente sostiene. Los problemas dejan de existir cuando los olvidamos. Todo problema ha sido creado por la mente y existe mientras la mente lo sostenga.
  #5 (permalink)  
Antiguo 09/04/2013, 17:12
Avatar de henrri  
Fecha de Ingreso: enero-2011
Mensajes: 40
Antigüedad: 13 años, 2 meses
Puntos: 3
Respuesta: Convertir double a int

Cita:
Iniciado por andrexsos17 Ver Mensaje
@henrri Gran idea pero no seria aplicable si la cantidad de decimales cambia, que es lo mas común.

Saludos.
Código:
public int metodo(String num) {
        int posPuntoDecimal = num.indexOf("."); //obtengo posicion del punto si en caso es coma cambiarlo
        if (posPuntoDecimal == -1) {    //sin en caso no hay punto quiere decir que es un entero
            return Integer.parseInt(num);
        }
        int potencia = num.length() - posPuntoDecimal - 1;  //calculo la cantidad de decimales que tiene
        if (potencia == 0) {    //si en caso el numero es de la fomra   153.  me retorna 0
            return (int) Double.parseDouble(num);
        }
        return (int) (Double.parseDouble(num) * Math.pow(10, potencia));    //y multiplico el numero por un 10^(a la cantidad de decimales)
    }
te sugiero que mejores el metodo

Última edición por henrri; 09/04/2013 a las 17:19
  #6 (permalink)  
Antiguo 10/04/2013, 01:20
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 7 meses
Puntos: 188
Respuesta: Convertir double a int

Te lo dejo según el planteamiento de andrexsos17

String aString = String.valueOf(a);
aString = aString.replaceAll(".","");
int b = Integer.valueOf(aString).intValue();

El problema que le veo es que si tiene muchos decimales igual se sale del rango del int, para este caso igual sería mejor que lo que devuelva sea long.

long b = Long.valueOf(aString).longValue();
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}

Etiquetas: double, int
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 16:55.