AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Aus wievielen Ziffern besteht meine Ganzzahl??
Thema durchsuchen
Ansicht
Themen-Optionen

Aus wievielen Ziffern besteht meine Ganzzahl??

Ein Thema von bingo72 · begonnen am 16. Jan 2008 · letzter Beitrag vom 17. Jan 2008
Antwort Antwort
Seite 1 von 3  1 23      
bingo72

Registriert seit: 18. Aug 2006
Ort: Österreich
180 Beiträge
 
Delphi 5 Professional
 
#1

Aus wievielen Ziffern besteht meine Ganzzahl??

  Alt 16. Jan 2008, 14:38
Hallo!!

Ich frag mich gerade, wie man am elegantesten die Anzahl der Stellen einer Ganzzahl ermittelt??
Ich hätt halt sonst gefühlsmässig den Integer in einen String umgewandelt und mit Length die Anzahl bestimmt??!!

Ist das so ok oder gibts was besseres??

LG
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Aus wievielen Ziffern besteht meine Ganzzahl??

  Alt 16. Jan 2008, 14:41
Du kannst auch in einer Schliefe solange "div 10" machen, bis deine Zahl 0 ist. Und natürlich die Anzahl der divs zählen.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
bingo72

Registriert seit: 18. Aug 2006
Ort: Österreich
180 Beiträge
 
Delphi 5 Professional
 
#3

Re: Aus wievielen Ziffern besteht meine Ganzzahl??

  Alt 16. Jan 2008, 14:43
Ok...danke!!
  Mit Zitat antworten Zitat
Benutzerbild von Kroko1999
Kroko1999

Registriert seit: 21. Apr 2005
Ort: Spremberg
455 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Aus wievielen Ziffern besteht meine Ganzzahl??

  Alt 16. Jan 2008, 14:51
ZiffernCount := 1+Int(Abs(ln(Ganzzahl))/ln(10)); [Edit]Formel verbessert
[Edit1] +1 hinzugefügt
Da sprach der Stumme zum Blinden: "Du wirst sehen ..."
oder
Wer lesen kann, ist klar im Vorteil!
  Mit Zitat antworten Zitat
Benutzerbild von PaddyL
PaddyL

Registriert seit: 23. Nov 2007
Ort: Lautertal
34 Beiträge
 
#5

Re: Aus wievielen Ziffern besteht meine Ganzzahl??

  Alt 16. Jan 2008, 14:58
Length(IntToStr(X)) dürfte auch gehen. Wie elegant bzw. schnell sowas ist weiß ich allerdings nicht.
Patrick
  Mit Zitat antworten Zitat
tr909

Registriert seit: 5. Nov 2004
193 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Aus wievielen Ziffern besteht meine Ganzzahl??

  Alt 16. Jan 2008, 15:00
Zitat von Kroko1999:
ZiffernCount := Int(ln(Ganzzahl)/ln(10));
n1ce, aber wenn dann noch ZiffernCount := Int(ln(Ganzzahl)/ln(10))+ 1;
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#7

Re: Aus wievielen Ziffern besteht meine Ganzzahl??

  Alt 16. Jan 2008, 15:03
Zitat von PaddyL:
Length(IntToStr(X)) dürfte auch gehen. Wie elegant bzw. schnell sowas ist weiß ich allerdings nicht.
Wer lesen kann...

Auch ich würde diesen Weg gehen.
  Mit Zitat antworten Zitat
Benutzerbild von Daniel Schuhmann
Daniel Schuhmann

Registriert seit: 16. Jul 2005
Ort: München
391 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Aus wievielen Ziffern besteht meine Ganzzahl??

  Alt 16. Jan 2008, 15:09
Zitat von s-off:
Auch ich würde diesen Weg gehen
Die div 10-Lösung dürfte effizienter sein.
Daniel Schuhmann
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#9

Re: Aus wievielen Ziffern besteht meine Ganzzahl??

  Alt 16. Jan 2008, 16:03
Tatsächlich,
habe mal ein paar Messungen mit folgendem Code durchgeführt:
Delphi-Quellcode:
Function TForm1.DivMethod(_Value: Integer): Integer;
Begin
   Result := 0;

   While _Value > 0 Do Begin
      _Value := _Value Div 10;
      Inc(Result);
   End;
End;

Function TForm1.StrMethod(_Value: Integer): Integer;
Begin
   Result := Length(IntToStr(_Value));
End;
wobei ich jeweils eine zehnstellige Zahl übergeben habe.

Bei einmaligem Aufruf der beiden Funktionen ergab sich im Durchschnitt (bei 10 Testläufen) ein auf die Laufzeit bezogener Faktor von 10,29 zu Gunsten der DivMethod-Funktion.

Für den einmaligen Gebrauch ist diese also tatsächlich deutlich schneller.

Anschliessend habe ich die Funktionen 100000 mal aufrufen lassen. Hier sinkt der Faktor allerdings auf minimale 1,10 ab.

Nun meine Frage: Wie kommt das? Werden da irgendwelche Werte 'zwischengespeichert' und wiederverwendet, so dass auf Dauer gesehen die StrMethod-Methode vielleicht sogar schneller werden würde als die DivMethod-Methode?
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Aus wievielen Ziffern besteht meine Ganzzahl??

  Alt 16. Jan 2008, 16:07
Hast du von den Zeitwerten den Durchschnitt gebildet, hast du das Minimum genommen, wie hast du Zeit gemessen. Da kann dir einiges in die Quere kommen. Auch Krokos Variante dürfte fix sein (er sollte nur die abs(Ganzzahl) bilden)
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz