String.format verwendet Komma statt Punkt

Meine App arbeitet an vielen Geräten ohne Probleme so weit. Aber jetzt habe ich meine neue Galaxy Tab mit Android 3.2, wo es stürzt die ganze Zeit. Ich habe herausgefunden, dass das Problem ein Float in einem EditText war. Ich verwende myEditText.setText(String.format("%.1f", fMyFloat)); Um den float in den EditText zu setzen. Aber irgendwie ist der Schwimmer auf meinem 3,2 Galaxy Tab mit einem Komma anstelle eines Punktes erzeugt. Wenn ich die EditText wieder die App abstürzt natürlich, sagen Sie mir, dass dies keine gültige Schwimmer wegen der Komma …

Was geht hier los?

  • AutoStart-Anwendung funktioniert nicht ordnungsgemäß
  • Best Practice für verschachtelte Fragmente in Android 4.0, 4.1 (<4.2) ohne Verwendung der Support-Bibliothek
  • Android: Wie öffne ich eine andere App aus meiner App?
  • Wo finde ich eine Dokumentation für BlueZ?
  • Warum muss ich die Konfigurationsdatei zu meinem Projekt hinzufügen, um gcm richtig einzurichten?
  • Facebook SDK 4.7.0 logs ClassNotFoundException für AppEventsLogger
  • Android-Start-Aktivität aus Service
  • Filterzeilen aus Cursor, so dass sie nicht in ListView angezeigt werden
  • Mehrfachauswahl im benutzerdefinierten ListView mit CAB
  • Wie man Cordova, Crosswalk und Ionic Framework kombiniert
  • Android ImageView.setMatrix () und .invalidate () - das Skizzieren dauert zu viel Zeit
  • Wie werden ein .apk-Dateien signiert
  • 4 Solutions collect form web for “String.format verwendet Komma statt Punkt”

    Konvertieren Sie Float in String ..

    Aus der Dokumentation von String.format :

    String.format (String-Format, Objekt … args)

    Gibt eine lokalisierte formatierte Zeichenfolge zurück, wobei das bereitgestellte Format und die Argumente verwendet werden, wobei das Standardgebietsschema des Benutzers verwendet wird.

    Der oben genannte Text bedeutet, dass die Ausgabe von String.format mit dem Standardgebietsschema übereinstimmt, das der Benutzer verwendet.

    Als Beispiel würde ein Komma als Dezimalpunkt-Trennzeichen verwendet werden, wenn es ein Benutzer ist, der schwedisches Gebietsschema verwendet, aber ein Punkt, wenn es einen Amerikaner benutzt.

    Wenn Sie String.format , was Gebietsschema verwendet werden soll, verwenden Sie die Überladung von String.format , die drei Parameter akzeptiert:

    • String.format (Gebietsschema Gebietsschema, String-Format, Objekt … args)

    Konvertieren von String zu float ..

    Das Parsen einer beliebigen Zeichenfolge in einen Float mit dem Standard-Gebietsschema ist ganz einfach, alles was Sie tun müssen, ist, DecimalFormat.parse zu verwenden.

    Verwenden .parse dann .parse , um eine Number und rufen Sie floatValue auf diesem zurückgegebenen Objekt an.

    String.format verwendet das Gebietsschema, in dem du bist. Du solltest so etwas machen, wenn du einen Punkt willst:

     NumberFormat formatter = NumberFormat.getInstance(Locale.US); myEditText.setText(formatter.format(fMyFloat); 

    Schauen Sie in NumberFormat nach weiteren Formatierungsoptionen

    Ihr format Aufruf auf Ihrem Galaxy Tab verwendet einige Standard- Locale die wiederum verwendet , für Floats. Sie könnten String.format(Locale,String,...) Version mit bestimmten Gebietsschema verwenden, um die Arbeit zu machen.

    Oder du musst das gleiche Gebietsschema sowohl für das Parsen als auch das Formatieren der Nummer verwendet haben. So solltest du wahrscheinlich mit NumberFormat gehen, um deine Schwimmer zu formatieren und zu analysieren.

    Verwenden Sie unten Code, das es für mich arbeitet:

     NumberFormat nf = NumberFormat.getNumberInstance(Locale.US); DecimalFormat df = (DecimalFormat)nf; df.applyPattern(pattern); String output = df.format(value); System.out.println(pattern + " " + output + " " + loc.toString()); 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.