![]() |
"Zeichen" im Integer
Wie kann man am schnellsten an die Länge eines Integers kommen, ohne Kommazahlen zu benutzen?
|
Re: "Zeichen" im Integer
meinst du wieviele Ziffern eine Integer Zahl hat?
anzziffern:=length(inttostr(zahl)); aber ist nicht so grad die feine mathematische Art ;) |
Re: "Zeichen" im Integer
Moin Fabian,
ein integer ist auf einem 32-Bit-System immer 4 Byte lang. |
Re: "Zeichen" im Integer
Ein Interger ist immer 4 Byte lang. Oder was verstehst du unter "Länge eines Integer"? Ich befrage mal meine Glaskugel und die meint du willst die Anzahl der Ziffern einer Zahl wissen. Bitte vor dem Posten etwas nachdenken, was man eigentlich will und / oder wo konkret das Problem ist. Dann kann man auch die Frage gescheit formulieren. Meist ergibst sich dann schon von selbst die Lösung, wenn man mal etwas darüber nachgedacht hat.
|
Re: "Zeichen" im Integer
Du meinst die Länge der String-Repräsentation des Integers?
Würd ich so machen:
Delphi-Quellcode:
Müsste klappen.
function GetStrToIntLength(x: Integer): Integer;
begin if x<0 then begin Result:=1; x:=abs(x); end else Result:=0; while x>0 do begin x:=x div 10; inc(Result); end; end; |
Re: "Zeichen" im Integer
Okay... Also das meinet ich nicht @ Seehase :D
Ich meinte, wie viele Ziffern ein Integer ohne die führenden Nullen hat. (Ich hoffe jetzt ist es verständlich :D) z.B. 12345 wäre dann 5 als Ergebnis @ Antigo: So geht es, aber ist es schnell genug? |
Re: "Zeichen" im Integer
Zitat:
Vor allem: wozu brauchst du diese Information, wenn man fragen darf? |
Re: "Zeichen" im Integer
Tut mir leid, ich verstehe überhaupt nicht, was Du willst - vor allem, weil Du bei integer auf einmal von Kommazahlen sprichst. Du bist ja nicht "neu im Geschäft"; deshalb nehme ich an, Du meinst nicht:
Delphi-Quellcode:
Folgendes dürfte ziemlich langsam sein:
iLaenge := SizeOf(integer);
Delphi-Quellcode:
Ich würde es vermutlich so machen:
iLaenge := Length(IntToStr(iZahl));
Delphi-Quellcode:
Ich vermute, dass einer der Fachleute für ASM oder Bit-Manipulation eine schnellere Lösung kennt. Jürgen
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; PS. Bitte nicht sauer sein, wenn ich mit C#-Schreibweisen durcheinander gekommen bin. PS2. Das war ja klar, dass ich langsam bin; aber meine Antwort ist noch nicht überflüssig. |
Re: "Zeichen" im Integer
wie wärs mit dem 10er Logarithmus?
Delphi-Quellcode:
uses math;
{...} function GetDigitLength(x: integer): integer; begin if x <> 0 then result := trunc(1+Log10(abs(x))); end; |
Re: "Zeichen" im Integer
Zitat:
Und bei der Berechnung möchte ich auf Kommazahlen verzichten. Zitat:
Würde es mir die Bitgröße (= 4 Byte) wiedergeben=? Folgendes dürfte ziemlich langsam sein:
Delphi-Quellcode:
iLaenge := Length(IntToStr(iZahl));
Zitat:
Zitat:
Zitat:
Zitat:
Ich sehe schon... Ich werde das mit den Methoden versuchen... und Testen wer schnell ist und wer nicht... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz