Wie schreibe ich in einer TextView "123755" als "123.755" ?

  • Antworten:4
Mathias Wittig
  • Forum-Beiträge: 24

20.06.2015, 18:38:29 via Website

Hi.
Ich beschäftige mich seit kurzem mit Android.
Meine Frage: Wenn ich in einer TextView eine Zahl anzeigen will, die von einem Integer/Double stammt, kann ich sie ohne Probleme zu Beispiel als : 123755 € schreiben. Wie kann ich nach der Tausender stelle einen Punkt setzen damit sie leichter abzulesen ist. Also als: 123.755 € ???

Danke im Voraus !👌

— geändert am 20.06.2015, 19:04:29

Antworten
Luca T.
  • Forum-Beiträge: 62

20.06.2015, 23:43:53 via Website

Es gibt sicherlich eine elegantere Methode/Library o.ä., aber falls du nichts anderes findest kannst du es ja mal versuchen, indem du deinen String parst, die Anzahl der Zeichen durch 3 teilst, das Ergebnis abrundest, und dann von hinten immer nach jedem dritten Zeichen einen Punkt einfügst, bis du so viele Punkte wie das Ergebniss der Division aufgefüllt hast.
Also (ich hoffe das funktioniert jetzt alles)

 public String besserLesbarMachen(String mPreis){      
    char[] mArray = mPreis.toCharArray();
    ArrayList<Character> mList = new ArrayList<Character>();//Zur besseren Handhabung
    for(char c : mArray) {
        mList.add(c);
    } 
    int mErgebniss = mArray.length/3; //Rundet direkt ab, weil man zu int castet
    for(int i = mArray.length; i>0; i--){
       int k = 0;
       if(i%3 == 0 && k<mErgebniss){
          mList.add(i-k-1,'.');
          k++;
       }
    }
    //mPreis leeren und dann aus der Liste neu auffüllen
    mPreis ="";
    for(int i = 0; i<mList.size(); i++){
        mPreis += mList.get(i);
    }
    return mPreis;
}

Mathias Wittig

Antworten
Mathias Wittig
  • Forum-Beiträge: 24

20.06.2015, 23:50:22 via Website

Danke !
An so ne Lösung hab ich auch schon gedacht, aber die wollte ich eig. vermeiden . Aber danke für deinen Code ! Bevor ich gar nix find nehm ich besser deinen
:D

Antworten
Gelöschter Account
  • Forum-Beiträge: 523

20.06.2015, 23:54:31 via Website

double d = 12345.67890;
DecimalFormat df = new DecimalFormat( "###,##0.00" );
System.out.println( df.format(d) ); // 12.345,68

Mathias Wittig

Antworten
Luca T.
  • Forum-Beiträge: 62

20.06.2015, 23:59:27 via Website

Ah, warte, da ist noch ein kleiner Fehler drin
Aber die elegantere Lösung wurde ja gerade sowieso gepostet

— geändert am 21.06.2015, 00:00:38

Antworten