# Anzahl der Ziffern



## MQue (4. Jul 2007)

Hallo,
wie kann ich bestimmen, wie viele Ziffern eine Zahl hat (z.B: 1324 = 4 Ziffern) und wie kann ich z.B.: die letzten 2 Ziffern herausbekommen,


----------



## SlaterB (4. Jul 2007)

durch 10^x teilen und schauen ob was über bleibt,
schneller gehts auf bit-Ebene,
anschaulicher: String draus machen und Länge nehmen

letzte Ziffern: zahl % 100   (modulo)


----------



## The_S (4. Jul 2007)

String str = String.valueOf(ziffer);
int length = str.length();
int lastTwo = Integer.parseInt(str.substring(str.length() - 2));


----------



## MQue (4. Jul 2007)

Ah, super, funktioniert!!


Danke!!

lg


----------



## The_S (4. Jul 2007)

Die Grönung der Performance ist das aber sicherlich nicht ...


----------



## kleiner_held (4. Jul 2007)

Und wenn die Zahl nur eine Ziffer hat ... -> StringIndexOutOfBoundsException
:-D


----------



## MQue (4. Jul 2007)

naja es funktioniert auf jeden Fall,
was wäre die Krönung der Performance,
Konzept wechseln geht nicht, das der Kunde sich in diese Richtung geäußert hat und ich froh bin, wenn irgendwelche Vorgaben da sind, da sonst meistens wieder alles umgeschmissen wird (da leider der Empfänger mit dem Projekt mitlebt und das ist ja ganz schlecht bei einem OO Design, es ist halt schwierig, irgendwelche Design Pattern einzusetzen, da auf einmal wieder was unvorhergesehenes dazukommt -> wie macht ihr das eigentlich???)

lg und Danke


----------



## The_S (4. Jul 2007)

Bit-Operatoren


----------



## kleiner_held (4. Jul 2007)

Zur Laengenberechnung ist String.valueOf(zahl).length() schon in Ordnung (Sonderfall negative Zahlen beachten)

Zum Beschneiden auf die letzten beiden Ziffern wie SlaterB schon schrieb: zahl % 100 - gibt dir die lezten 2 Ziffern und funktioniert sogar wenn zahl == 1 ist.


----------



## MQue (4. Jul 2007)

Also wenn ich die letzte Ziffer möchte dann & 000F; ?


----------



## MQue (4. Jul 2007)

Dankeschön!!


----------



## Murray (4. Jul 2007)

kleiner_held hat gesagt.:
			
		

> Zur Laengenberechnung ist String.valueOf(zahl).length() schon in Ordnung (Sonderfall negative Zahlen beachten)



Solche String-Operationen sind für numerische Probleme sicher nicht jedermanns Fall; alternativ funktioniert auch

```
public static int countDigits( int i) {
  	return (i==0) ? 1 : ( ((i>0) ? 1 : 2) + (int)Math.log10( (double)Math.abs( i)));
  }
```

Also: für ganze Zahlen > 0 ergibt sich die Anzahl der Stellen durch 1 plus den abgerundeten Zehnerlogarithmus der Zahl. Der Sonderfall 0 ist einfach: 1 Ziffer. Für negative Zahlen muss man den Betrag bilden und eine Stelle für das Vorzeichen addieren (wenn man das mitzählen will).


----------



## Marco13 (4. Jul 2007)

EDIT: Unfug :roll:


----------



## kleiner_held (4. Jul 2007)

Murray hat gesagt.:
			
		

> Solche String-Operationen sind für numerische Probleme sicher nicht jedermanns Fall.


Naja ehrlich gesagt sind double Operationen fuer numerische Probleme auch nicht mein Fall und fuer einen iterativen Algorithmus war ich zu faul. Wobei Fehler aufgrund der Ungenauigkeit bei int wahrscheinlich nicht auftreten, sondern erst bei sehr grossen long Zahlen entstehen sollten.


----------

