2011-01-14 8 views
3

Ich erhalte eine java.lang.NumberFormatException: Für Eingabestring: „1,7023484830876092“Long.parseLong („digitstring zu groß“) produziert java.lang.NumberFormatException

die Zeichenfolge 1,70234 Trimmen, löst das Problem , aber bevor ich die Zeichenfolge selbst schneide, frage ich mich, ob es möglich ist, einige Java-Methoden zu verwenden, um die Kapazität des Zielobjekts zu nutzen.

Mit freundlichen Grüßen, Jeroen.

+0

Haben Sie versucht, Double oder Float? –

+0

Was ist der Gleitkommatrenner in Ihrem Gebietsschema? – thkala

Antwort

1

Es sieht aus wie ein Schwimmer. Vor allem seit dem ersten "." ist der einzige.

1

Sie vielleicht Sie BigDecimal wollen? Es ist variabel bemessen, um eine beliebige Anzahl aufzunehmen, solange Sie den Speicher haben. Verwenden Sie als new BigDecimal(stringNumber). Nachteil ist, dass Sie keinen Zugang zu den Standard-Infix-Operatoren erhalten (zB + - */etc ...).

Aber wenn Sie nur den größten Wert möchten, dann Long.MAX_VALUE

+2

Ich denke, dies sollte BigDecimal nicht BigInteger sein, da die Frage eine Zahl mit einer Dezimal-Darstellung enthält. – fasseg

+0

BigDecimal ist in der Tat die bessere Wahl. – Dunes

1

verwenden von einem primitiven gehalten werden kann, können Sie nicht Gleitkommawerte mit Long.parseLong analysieren. Verwenden Sie stattdessen Double.parseDouble.