2017-01-15 3 views
0

Gibt es eine Möglichkeit, eine NumberFormatter zu machen, die die folgenden:Bedingte NumberFormatter?

  1. Wenn die Doppel eine ganze Zahl wie 5.0, Display „5“

  2. ist, wenn die Doppel eine Dezimalzahl wie 5.6 ist, Anzeige "5.6"

+1

Die Antwort ist absolut ja. Sie können Ihre eigene Unterklasse von 'NumberFormatter' schreiben, um zu tun, was immer Sie wollen. –

+0

Ich hatte versucht Lösungen von http://stackoverflow.com/questions/41657200/how-to-default-an-edittext-to-integer-but-allow-decimal-input/41657315 aber nichts funktioniert, also versuche ich ein Format Lösung – KaliMa

+0

@DavidWallace Ich bin mir sicher, dass es getan werden kann, aber wenn ich wüsste, wie es in diesem Fall zu tun wäre, hätte ich nicht gefragt – KaliMa

Antwort

-1
double someNum = 5.6d; 
DecimalFormat df = new DecimalFormat("#.#"); 
String num = df.format(someNum); 
if (num.substring(num.length - 1).equals("0")) { 
    num = num.substring(0, num.length - 2); 
} 
System.out.println(num); 

die DecimalFormat Instanz formatiert der Doppel in einen String. Der Code prüft die zehnte Stelle der Genauigkeit, d. H. Die erste Ziffer rechts von der Dezimalstelle, und wenn sie Null ist, dann zeigt sie nur ganze Zahlen an. Ansonsten zeigt es die volle Präzision.

+0

Trunkiert dies keine 0? Wie wenn ein Benutzer 120 eingeben würde, würde er auf 12 fallen? – KaliMa

+1

Hast du meinen Code wirklich getestet? Ihre Frage wurde nur nach Zahlen mit einer Genauigkeitsziffer nach dem Komma gestellt. –

+0

Nun schaue ich normalerweise den Code für ein oder zwei Sekunden, bevor ich es teste, aber ja, es scheint zu funktionieren, ich sehe einfach nicht, wie – KaliMa