Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Potenz ganz ausgeben


mlhk - Mo 07.09.09 15:53
Titel: Potenz ganz ausgeben
hey,
Ich möchte die Potenz von 2^63 berechnen, das geschieht auch ohne weiteres, nur kommt da 9,22337E+18 raus , ich möchte allerdings das da eine Zahl ohne Potenz rauskommt.
Gruß
mlhk


Moderiert von user profile iconNarses: Topic aus VCL (Visual Component Library) verschoben am Mo 07.09.2009 um 17:48


Narses - Mo 07.09.09 16:53

Moin!


Delphi-Quelltext
1:
ShowMessage(IntToStr($7FFFFFFFFFFFFFFF));                    


Quelltext
1:
9223372036854775807                    
naja, genau genommen muss man da noch 1 draufzählen... MaxInt64 ist ja "nur" 2^63-1
cu
Narses


mlhk - Mo 07.09.09 20:09

Allerherzlichen Dank,
funktioniert wunderbar, kannst du mir noch was zu $7FFFFFFFFFFFFFFF sagen
Gruß mlhk


Yogu - Mo 07.09.09 20:16

user profile iconmlhk hat folgendes geschrieben Zum zitierten Posting springen:
kannst du mir noch was zu $7FFFFFFFFFFFFFFF

Das Dollarzeichen ($) leitet eine Hexadezimale Zahl ein. Du kannst sie natürlich auch dezimal schreiben. Und 9223372036854775807 ist eben 2^63-1. Ganz einfach. 2^63 kannst du in Delphi nicht als normale Zahl darstellen, sie ist (um 1) zu groß ;)

Wenn du damit weiterrechnen möchtest, sieh dir mal Suche in der Entwickler-Ecke BIGNUM an :les:


mlhk - Mo 07.09.09 20:36

Heißt das also, dass ich ganz normal rechnen kann also 9,22337E+18 und das dann einfach in Heaxdaziaml umrechnen muss und schon hab ich was ich will?


Yogu - Mo 07.09.09 20:38

Was willst du denn eigentlich machen? Dem Benutzer einfach das Ergebnis von 2^63 anzeigen, und das war's dann? Oder soll das Ergebnis irgendwo gespeichert werden? Willst du damit weiter rechnen? Oder ist gar die 2 oder die 64 variabel, z.B. vom Benutzer einzegeben?


jakobwenzel - Mo 07.09.09 20:43

user profile iconmlhk hat folgendes geschrieben Zum zitierten Posting springen:
9,22337E+18

Das Problem bei der Zahl ist, dass das eine Fließkommazahl ist, und deshalb nicht notwendigerweise alle Stellen in der Genauigkeit liegen.


mlhk - Mo 07.09.09 20:53

genau ich wollte 2 und 64 als Variablen stellen, das mit der Ungenauigkeit hatte ich mir schon gedacht, werd mal sehen was ich da noch machen werde, erstmal danke
Gruß mlhk


Yogu - Mo 07.09.09 21:34

user profile iconmlhk hat folgendes geschrieben Zum zitierten Posting springen:
genau ich wollte 2 und 64 als Variablen stellen

Das heißt, du bastelst eine Art "Taschenrechner", der potenzieren kann. Verstehe ich das jetzt richtig? Dann verwende doch BigNum2 [http://www.delphi-forum.de/topic_BigNum2+v02120080517_83402.html] von user profile iconBenBE. Dort gibt's eine Methode BM_Power, die allem Anschein nach potenzieren kann. Und BigNum hat den Vorteil, dass überall nur Ganzzahlen verwendet werden, die ganz schön groß werden dürfen. Also auch nix mit wissenschaftlicher Darstellung der Zahlen (9,22337E+18 ). :D