2010-03-30 6 views

Antwort

27

Wenn Sie Ihren Wert als String haben, könnten Sie

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

Ich habe so etwas wie: String val = new BigDecimal (stringValue) .toPlainString(); seit ich den Wert zurück als String wollte. Danke, dass Sie mich auf BigDecimal verwiesen haben. – user305210

+0

Genau das, was ich gesucht habe, danke – prolink007

+0

Kampf mit einigen wissenschaftlichen Notation-formatierten Wert aus Excel (mit POI), die ein Datum im Format "JJJJMMTD" sein. Das war sehr hilfreich! – Alfabravo

2

Sie können es einfach zu gieße int wie:

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

Ich habe es tatsächlich versucht, bevor ich die Frage hier auf stackoverflow gestellt habe, aber aus irgendeinem Grund habe ich mich entschieden, es nicht zu benutzen, da ich Angst hatte, Informationen während dieser Konvertierung zu Double und dann zu Int zu verlieren. Aber ich denke, es ist ein gültiger Weg. – user305210

+0

Dies ist nicht gültig. Sie haben recht, wenn Sie denken, dass einige Informationen verloren gehen. Dies liegt daran, dass Double 8 Byte und Ints 4 Byte sind. Nehmen Sie dies als Beispiel und beachten Sie den großen Unterschied nach dem Gießen. \t \t 'doppelt 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

verwende ich nehme an, dass Sie es als String haben.

Werfen Sie einen Blick auf die DecimalFormat Klasse. Die meisten Leute verwenden es zum Formatieren von Zahlen als Strings, aber es hat tatsächlich eine Parse-Methode, um anders herum zu gehen! Sie initialisieren es mit Ihrem Muster (siehe Tutorial) und rufen dann parse() für die Eingabezeichenfolge auf.

2

Auschecken DecimalFormat.parse().

Beispielcode:

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

Sie können auch so etwas wie dieses verwenden.

(int) Double.parseDouble("1.23E2") 
Verwandte Themen