![]() |
Hex to Dezimal von Pi
Hi Leute,
ich hab mich die letzten Stunden hingestetzt und das Verfahren von David H. Bailey zur Pi-Berechnung in Delphi umgsetzt. (nach einer C Vorlage) Das Problem ist, dass dieses Verfahren die Zahl pi in Hexadezimalzahlen ausgbibt. Es kommt also sowas raus wie 243F6A8885,A308D31319,8A2E037073,... Auf einigen Websites hab ich auch die Darstellung als 3.243F6A8885A308D313198A2E037073 gefunden. Leider sind alle Versuche diese Zahl irgendwie in das Dezimalsystem umzurechnen gescheitert. Rauskommen müsste ja irgendwas mit 3.14159... Wenn ihr also einen Tip habt, wie ich das hinbekommen könnt, wär das SUPI. Bye |
Re: Hex to Dezimal von Pi
Hex zahlen werden normalerweise in Delphi mir einem $-zeichen 'angekündigt'. Wenn du nun sowas machst: StrToInt('$123ABC'), dann kommt da: 1194684 ... sowas raus ...
Ich hoffe das hilft dir weiter ... ciao, Philipp |
Re: Hex to Dezimal von Pi
ich bezweifel, ob das klappt, wenn man ein paarhundert (eher mehr) stellen hat
|
Re: Hex to Dezimal von Pi
Für rechnen mit langen Zahlen nehm ich immer Hagens DEC
|
Re: Hex to Dezimal von Pi
Danke erstmal,
die erste Variante mit StrToInt war mir bekannt. Leider bietet sie nicht genügend Genauigkeit. Wen es interessiert: Um das ganze Handschriftlich auszurechnen kann man sich folgender Art der Rechnung bedienen. 3.243F6A8885... 3, 2 4 3 F pi = 3 * 16^0 + 2 * 1/16^1 + 4 * 1/16^2 + 3 * 1/16^3 + 15 * 1/16^4 ... Das eigentliche Problem, was allerdings wohl nicht lösbar ist, ist eine beliebige Stelle von Pi von Hex in Dezimal umzurechnen, ohne die vorherigen zu wissen. Trotzdem Danke Ich lass einfach die Hex-Zahlen Bye |
Re: Hex to Dezimal von Pi
Zitat:
Ich habe eine andere und bei dir steht 16^0 was eigentlich nicht geht! Pi = 4 * (1/1-1/3+1/5-1/7+1/9-1/11+1/13-...) Die kann man zwar umformen aber 16^0 ist bestimmt falsch! |
Re: Hex to Dezimal von Pi
@Nicolai1605
Also die Formel: Zitat:
Die Rechnung geht dann so weiter 3 * 16^0 = 3 (da 16^0 = 1 --> nur zur Veranschaulichung gedacht) 2*1/16^1 = 1/8 4*1/16^2 = 1/64 3*1/16^3 = 3/4096 15/16^4 = 15/65536 3+1/8+1/64+3/4096+15/65536 = ist rund 3.14158... Die Formel die du beschrieben hast: Zitat:
Ich aber habe Pi bereits mit Hilfe einer anderen Methode berechnet - nur eben in Hexadezimalschreibweise. Damit ich mit dieser Berechnung nun auch was anfangen kann, wollt ich sie in die Dezimalschreibweise umwandeln. Das geht aber leider nur wie oben beschrieben. Hoffe du weißt jetzt, was ich mein Bye |
Re: Hex to Dezimal von Pi
Zitat:
Genauer gesagt ist sie: Pi = 3 * 16^0 + 2 * 16^(-1) + 4 * 16^(-2) + 3 * 16^(-3) + 15 * 16^(-4) ... Wobei: 16^0 = 1 16^(-1) = 1/16 (ein sechzehntel) 16^(-2) = 1/(16^2) = 1 / (16*16) ... Es handelt sich dabei um ein Festkommaformat. Es lässt sich relativ leicht in ein binäres Festkommaformat transformieren: aaaa.bbbbccccddddeeee 0011.0010010000111111 Hier die Umwandlung in das Extended-Format
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var h : string; x, f : Extended; i : Integer; begin f := 1.0; h := '3243F6A8885'; x := 0.0; for i := 1 to Length(h) do begin x := x + f * StrToInt('$'+h[i]); f := f / 16.0; end; Caption := FloatToStr(x); end; |
Re: Hex to Dezimal von Pi
Danke für den Code,
leider muss ich sagen, wie ich weiter oben mit Sicherheit schon erwähnt habe, dass ich diese Art von Umrechnung nicht gebrauchen kann, da ich bei der Berechnung der Hexadezimalstellen von Pi jede beliebige Stelle berechnen kann - Also die n-te Stelle von Pi. Ohne allerdings jede Stelle vor dieser Stelle zu wissen (was der Fall sein wird, da man bei der 1.000.000 Stelle nicht die Stellen vorher alle ausrechnen kann), kann ich pi nicht in Dezimalzahlen umwandeln. Dieses hatte ich aber versucht. (Es hat und wird nie klappen) Ich wollte deshalb noch die korrekte Umrechnung von Hexadezimal- in Dezimalzahlen darstellen unter Hilfe aller vorherigen Stellen von Pi. |
Re: Hex to Dezimal von Pi
Leider müssen bei dieser Umrechnung alle Stellen vorher ermittelt werden.
Nur Hex <-> Bin <-> Okt benötigt man keine Kenntnisse über die vorhergehenden zahlen. Grund: Binäre d10 b1010 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:54 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-2025 by Thomas Breitkreuz