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?

  • Wie man viele verschiedene Ansichtstypen in recyclerview viewholder verarbeitet
  • Decodierung von Polylinien mit neuer Google Maps API
  • Android - Listview löschen und aktualisieren
  • Kann OnCheckedChangeListener nicht in eine Checkbox setzen
  • Verwenden von ImageView für Panoramablick
  • Nach dem Aktualisieren von Google Play-Diensten auf 8.4.0 Push-Benachrichtigungen von sich selbst angezeigt
  • Wie überlässt WhatsApp die GCM Push Notifications Verzögerung?
  • Google Play Order ID wurde auf neues Format aktualisiert
  • Android-Dialog: Titelleiste entfernen
  • Was ist die Camera2 API Äquivalent von setDisplayOrientation ()?
  • Webview Load Html Inhalt
  • M_mainFrame-> editor () -> hasComposition nicht ausgeben
  • 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.