2010-03-30 23 views

Respuesta

27

Si usted tiene su valor como una cadena, se puede usar

int val = new BigDecimal(stringValue).intValue(); 
+4

Utilicé algo como: String val = new BigDecimal (stringValue) .toPlainString(); ya que quería recuperar el valor como String. Gracias por indicarme BigDecimal – user305210

+0

Exactamente lo que estaba buscando, gracias – prolink007

+0

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

2

Usted puede simplemente echarlo a int como:

double d = 1.23E2; // or float d = 1.23E2f; 
int i = (int)d; // i is now 123 
+0

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

+0

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

2

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.

2

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 
0

También puede usar algo como esto.

(int) Double.parseDouble("1.23E2") 
Cuestiones relacionadas