Hola,
Si alguna vez, les ha pasado que están convirtiendo un número muy grande en Java con Double.parseDouble("10000000") y al convertirlo imprime "1E7", esto se debe a que la conversión dejo el número con formato científico.
Para obtener el número real, se debe usar la clase DecimalFormat en java, de la siguiente manera:
import java.text.DecimalFormat;
import java.util.Locale;
/**
* Metodo encargado de convertir un numero Double con formato cientifico a un String normal.
* @param bdDoubleFC Define el numero double a formatear
* @return un String con el numero
*/
public static String convertirDoubleFormatoCientificoADouble(double bdDoubleFC){
Locale.setDefault(Locale.US);
DecimalFormat numberNormal = new DecimalFormat("####");
return numberNormal.format(bdDoubleFC);
}
Igualmente, se pueden agregar separadores como comas (,) o implementar decimales con punto flotante (.), de la siguiente forma:
/**
* Metodo encargado de convertir un numero Double con formato cientifico a un String normal.
* @param bdDoubleFC Define el numero double a formatear
* @return un String con el numero
*/
public static String convertirDoubleFormatoCientificoADouble2(double bdDoubleFC){
Locale.setDefault(Locale.US);
DecimalFormat numberNormal = new DecimalFormat("#,###.00");
return numberNormal.format(bdDoubleFC);
}
El método main() que permite invocar el metodo convertirDoubleFormatoCientificoADouble(), sería así:
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
//Forma 1 - numero con punto flotante
double numeroFC = 286578432.33;
//el sistema imprime: 286578432
System.out.println("Forma 1 - numero con punto flotante: " + convertirDoubleFormatoCientificoADouble(numeroFC));
//Forma 2 - notacion cientifica
double numeroFC2 = 1E7;
//el sistema imprime: 10000000
System.out.println("Forma 2 - notacion científica: " + convertirDoubleFormatoCientificoADouble(numeroFC2));
}
Listo, eso es todo.
Basado en:
0 comentarios :
Publicar un comentario