Zitat von
Jürgen Thomas:
Tut mir leid, ich verstehe überhaupt nicht, was Du willst - vor allem, weil Du bei integer auf einmal von Kommazahlen sprichst.
Wo ist das Problem? Ich will die Anzahl der Ziffern ohne führenden Nullen einer Ganzzahl.
Und bei der Berechnung möchte ich auf Kommazahlen verzichten.
Zitat von
Jürgen Thomas:
Du bist ja nicht "neu im Geschäft"; deshalb nehme ich an, Du meinst nicht:
iLaenge := SizeOf(integer);
Sry, aber mit der SizeOf Methode arbeite ich eigentlich nicht.
Würde es mir die Bitgröße (= 4 Byte) wiedergeben=?
Folgendes dürfte ziemlich langsam sein:
iLaenge := Length(IntToStr(iZahl));
Zitat von
Jürgen Thomas:
Ich würde es vermutlich so machen:
Delphi-Quellcode:
function AnzahlZiffern(const iZahl: int): integer;
var i0: integer;
begin
Result := 1;
i0 := iZahl div 10;
while (i0 >= 0)
do begin
Inc(Result);
i0 := i0 div 10;
end;
end;
Ist ja fast 3 of 8 Methode.
Zitat von
Jürgen Thomas:
Ich vermute, dass einer der Fachleute für
ASM oder Bit-Manipulation eine schnellere Lösung kennt.
Da sich bisher niemand dazu geäußert hat... Ist es wahrschienlich eure (deine und 3 of 8) Lösung!
Zitat von
Jürgen Thomas:
PS. Bitte nicht sauer sein, wenn ich mit C#-Schreibweisen durcheinander gekommen bin.
Außer die Klammern in der "while"-Zeile sieht da nichts falsch aus... (Wobei die Klammern kein Fehler sind, aber eigentlich doch in c# Pflicht sind...)
Zitat von
Jürgen Thomas:
PS2. Das war ja klar, dass ich langsam bin; aber meine Antwort ist noch nicht überflüssig.
Ich sehe schon... Ich werde das mit den Methoden versuchen... und Testen wer schnell ist und wer nicht...