Wie konvertiere ich einen String in Double mit einem bestimmten Gebietsschema?
Ich konvertieren möchte einige zahlen, die ich als strings in Doubles, aber diese zahlen sind bei UNS nicht standard-locale -, sondern in einem anderen. Wie kann ich das tun?
InformationsquelleAutor der Frage Daniel C. Sobral | 2009-05-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen
java.text.NumberFormat
. Aus den Javadocs:parse()
gibt eineZahl
; so bekommen Sie einedouble
haben, müssen SiemyNumber.doubleValue()
:Beachten Sie, dass
parse()
nie zurücknull
so kann dies nicht die Ursache fürNullPointerException
. Stattdessenparse
wirft einen geprüftenParseException
wenn es fehlschlägt.Edit: ich ursprünglich gesagt, dass es einen anderen Weg, um zu konvertieren, um
double
: wandeln Sie das Ergebnis inDouble
und verwenden unboxing. Ich dachte, dass da ein general-purpose-InstanzNumberFormat
verwendet wurde, die (pro die Javadocs fürgetInstance
), es würde immer wieder einDouble
. Aber DJClayworth weist darauf hin, dass die Javadocs fürparse(String, ParsePosition)
(das heißt durchparse(String)
) sagen, dass einLong
zurück, wenn möglich. Daher casting das ErgebnisDouble
ist unsicher und sollte nicht versucht werden!Dank, DJClayworth!
InformationsquelleAutor der Antwort Michael Myers
NumberFormat ist der Weg zu gehen, aber Sie sollten sich bewusst sein, die Besonderheiten, die auftauchen, wenn Ihre Daten weniger als 100% richtig.
Fand ich das folgende nützlich:
http://www.ibm.com/developerworks/java/library/j-numberformat/index.html
Wenn Sie Ihre Eingabe vertraut werden kann, dann brauchen Sie sich keine sorgen zu machen.
InformationsquelleAutor der Antwort Jasper Floor
Verwenden Sie eine
NumberFormat
. Hier ist ein Beispiel, das ich denke, sieht richtig.InformationsquelleAutor der Antwort unwind
Gerade java zu lernen und Programmieren. Hatte ähnliche Frage. Fand etwas, was so in meinem lehrbuch:
Das Buch sagt, dass ein scanner automatisch dekodiert, was in eine String variabel ist und dass der Scanner-Klasse passt sich automatisch der Sprache des Gebietsschemas, system-Locale als default, aber das ist einfach etwas anderes.
Ich löste mein problem auf diese Weise. Vielleicht könnte dies die Arbeit für die oben genannten Thema statt Analyse?
Ergänzung: Der Grund, warum ich gerne diese Methode war die Tatsache, dass bei der Verwendung von swing dialouge Felder für die Eingabe und dann zu versuchen, konvertieren Sie die Zeichenfolge in doppelte mit analysieren habe ich eine NumberFormatException. Es stellte sich heraus, dass parse verwendet ausschließlich US-Nummer Formatierung während der Scanner kann mit allen Formaten. Scanner gemacht, die Eingabe funktioniert auch mit der Komma (,) dezimal-Trennzeichen. Da die meisten stimmten bis Antwort verwendet parse ich sehe wirklich nicht, wie es zu lösen wäre dieses problem. Sie hätte die Eingabe Ihrer zahlen im US-format und dann konvertieren Sie Sie in Ihrem Gebietsschema-format. Das ist ziemlich ungünstig, wenn die numerische Tastatur ist ausgestattet mit einem Komma.
Nun sind Sie alle frei zu zerreißen mich in Stücke 😉
InformationsquelleAutor der Antwort lytwaytLaz
Sollte das kein problem sein mit Hilfe von java.text.DecimalFormat.
InformationsquelleAutor der Antwort Roland Ewald
NumberFormat Verwenden.getNumberInstance(Locale)
InformationsquelleAutor der Antwort adrian.tarau
Wissen Sie, welche Gebietsschema ist? Dann können Sie
dadurch wird auch die Arbeit für die wissenschaftliche Notationen, strings mit Prozent-Zeichen oder Zeichenfolgen mit Währungssymbole.
InformationsquelleAutor der Antwort Fortega
Hier ist wie Sie verwenden
parseDouble
konvertierenString
zu einemDouble
:doubleExample.java
InformationsquelleAutor der Antwort bjarun