Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Mahte -> Wurzel von 2 berechnen und als String ausgeben


fawkes - Di 14.10.03 15:47
Titel: Mahte -> Wurzel von 2 berechnen und als String ausgeben
Hallo Expertenvolk,

ich hab da mal ne Frage. Also mein Problem ist. Ich will Zahlen radizieren deren Ergebnis irrational ist, wie zB 2 und dann ausgeben. So sieht es bei mir aus:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure wurzel;
var
  Ergebnis : PChar;
  wurzel : Extended;
begin
  wurzel := sqrt(2);
  FloatToText(Ergebnis, wurzel,fvExtended,ffGeneral,50,50);
end;

Nur leider gibt der Code zur Laufzeit einen EAccessViolation-Fehler aus. Also Speicherzugriffsverletzung. Hab so gut wie keine Ahnung wieso. Vielleicht wegen der Extended-Variable, die ich erst speichere. Aber die Funktion FloatToText kann nur ne Variable. Ich hoffe ihr könnt mir helfen.

Danke,
fawkes

Moderiert von user profile iconTino: Code- durch Delphi-Tags ersetzt.


Mari - Di 14.10.03 16:21

Wie wär's damit?

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure Wurzel;
var ergebnis:String;
    wurzel: Extended;
begin
 wurzel := sqrt(2);
 ergebnis := floattostr(wurzel);
end;


Moderiert von user profile iconTino: Code- durch Delphi-Tags ersetzt.


fawkes - Di 14.10.03 16:43

Ja das würd gehen.
Nur ich will ein paar mehr Stellen als die, die FloattoStr ausgibt.

Trotzdem Danke


barfuesser - Di 14.10.03 17:37

FloatToStr gibt meines Wissens alle verfügbaren Stellen aus. Wenn Du mehr Stellen wünschst, mußt Du wahrscheinlich die Wurzel stellenweise ausrechnen und das Ergebnis als String zusammenbauen.

barfuesser


Mari - Di 14.10.03 17:41

ergebnis := floattostrf(wurzel,ffgeneral,18,18);
Genauer geht es dann aber nicht mehr, da nicht mehr Stellen ausgerechnet werden.

Moderiert von user profile iconTino: Code- durch Delphi-Tags ersetzt.


fawkes - Di 14.10.03 17:48

Ja das hab ich gerade auch gemerkt(man war ich blöd) und da die Datentypen ja nur maximal 20 Stellen oder so unterstützen steh ich jetzt vor einem Problem.

Wie berechne ich die Wurzel von 2 auf 400 Stellen und mehr.



Hat da irgendjemand ne Ahnung?


Danke,
fawkes


fawkes - Di 14.10.03 19:13

Also ich hab dann mal weiterüberlegt. Eigentlich brauche ich einen Variablentype, welcher Dezimal-Werte unbestimmter Länge verwalten kann. Kennt vielleicht irgendjemand dafür eine Klasse bzw. Komponente?

Das wäre mir sehr hilfreich!

Danke,
fawkes