¿Cómo se convierte la notación científica para regular de int Por ejemplo: 1.23E2 me gustaría convertirlo a 123Java: Convierte la notación científica para regular de int
Gracias.
¿Cómo se convierte la notación científica para regular de int Por ejemplo: 1.23E2 me gustaría convertirlo a 123Java: Convierte la notación científica para regular de int
Gracias.
Si usted tiene su valor como una cadena, se puede usar
int val = new BigDecimal(stringValue).intValue();
Utilicé algo como: String val = new BigDecimal (stringValue) .toPlainString(); ya que quería recuperar el valor como String. Gracias por indicarme BigDecimal – user305210
Exactamente lo que estaba buscando, gracias – prolink007
Luchando con algún valor de formato de notación científica de Excel (utilizando POI) que pasa a ser una fecha en formato "aaaaMMdd". ¡Esto fue realmente útil! – Alfabravo
Usted puede simplemente echarlo a int
como:
double d = 1.23E2; // or float d = 1.23E2f;
int i = (int)d; // i is now 123
De hecho, intenté esto antes de publicar la pregunta aquí en stackoverflow, pero por alguna razón decidí no usarlo porque tenía miedo de perder información durante esta conversión a Double y luego a Int. Pero supongo que es una forma válida. – user305210
Esto no es válido. Tiene razón al pensar que se perderá cierta información. Esto se debe a que los dobles tienen 8 bytes mientras que los ints tienen 4 bytes. Tome esto como un ejemplo y note la gran diferencia después del lanzamiento. \t \t 'double dlow = Double.parseDouble (" - 2299999999 "); \t \t int ilow = (int) dlow; \t \t System.out.println ("dlow =" + String.valueOf (dlow)); \t \t System.out.println ("(int) dlow =" + String.valueOf (ilow)); \t \t System.out.println ("ILOW-Dlow =" + String.valueOf (ILOW-Dlow)); '' Dlow = -2.299999999E9 (int) Dlow = -2147483648 ILOW-Dlow = 1.52516351E8 ' – James
Estoy asumiendo que lo tienes como una cadena.
Echa un vistazo a la clase DecimalFormat. La mayoría de la gente lo utiliza para formatear números como cadenas, ¡pero en realidad tiene un método de análisis para ir al revés! Inicializarlo con su patrón (ver el tutorial), y luego invocar parse() en la cadena de entrada.
Echa un vistazo DecimalFormat.parse().
Código de ejemplo:
DecimalFormat df = new DecimalFormat();
Number num = df.parse("1.23E2", new ParsePosition(0));
int ans = num.intValue();
System.out.println(ans); // This prints 123
También puede usar algo como esto.
(int) Double.parseDouble("1.23E2")
¿Lo tiene como 'Cadena'? – Bozho
¿Tiene la cadena "1.23E2" o una "flotación" que es igual a 1.23e2? – msw