![]() |
Extended mit mehr als 18 Stellen
Hi Leutz,
Ich möchte einen Extended Wert mit FloatTostrF in eine reine Zahl Formatieren. Das funktioniert aber nur bis 18 Stellen. Was mache ich denn, wenn ich aber mehr als 18 als reine Zahl anzeigen möchte? :?: Danke schonmal.. Greetz BlackFoXX |
Re: Extended mit mehr als 18 Stellen
mehr als 18 stellen wird ein extended eh nicht haben.
edit: ok, ich hab gegoogelt und extended soll etwa 19 stellen hinkriegen. mehr aber auch nicht. edit: ![]() ein extended hat 64 bit genauigkeit (rest ist exponent) und damit 19.266 dezimalstellen genauigkeit |
Re: Extended mit mehr als 18 Stellen
sonst musst du es eben selber schreiben...
Delphi-Quellcode:
(getestet+funktioniert)
function floattostr(x:extended;kommastellen:integer):string;
var b:extended; i:integer; begin b:=x; if b<0 then begin b:=-b; result:='-'; end else result:=''; result:=result+inttostr(trunc(b))+','; b:=b-trunc(b); for i:=1 to kommastellen do begin b:=b*10; result:=result+inttostr(trunc(b)); b:=b-trunc(b); end; end; für große Zahlen natürlich unbrauchbar, da die Funktion keine Schreibweise "17,793479823789e18" hinkriegt. |
Re: Extended mit mehr als 18 Stellen
Laut Delphi Hilfe ist der maximale Wert von Extended 1.1*10^4932 bei 8 Byte Größe und 1920 signifikanten Stellen.
Es sind also weitaus mehr als 18 Stellen oder? :gruebel: Nur wie bekomme ich die in meinen String? |
Re: Extended mit mehr als 18 Stellen
ich hab dir gerade oben eine Funktion hingeschrieben. Die geht auch. Aber ein Extended-Wert hat 10 Byte, da passen niemals 1920 Signifikante Stellen rein.
Delphi-Quellcode:
wenn du z.B. Pi auf 10^20 Stellen genau berechnen willst, kommst du eben nicht drumrum einen neuen Typ zu schreiben oder so.
function floattostr(x:extended;kommastellen:integer):string;
var b:extended; i:integer; begin b:=x; if b<0 then begin b:=-b; result:='-'; end else result:=''; result:=result+inttostr(trunc(b))+','; b:=b-trunc(b); for i:=1 to kommastellen do begin b:=b*10; result:=result+inttostr(trunc(b)); b:=b-trunc(b); end; end; |
Re: Extended mit mehr als 18 Stellen
naja..
Stand eben in der Hilfe. Ich werd mal den Code testen. Danke. Greetz BF |
Re: Extended mit mehr als 18 Stellen
das heisst nicht "1920" sondern "19-20"...
|
Re: Extended mit mehr als 18 Stellen
ja, so klingt es auch sinnvoller... :mrgreen:
|
Re: Extended mit mehr als 18 Stellen
Zitat:
Für (theoretisch) unbegrenzt viele Nachkommastellen gibt's den genialen IInteger von Hagen: ![]() [edit]Zu langsam :stupid: ... [/edit] |
Re: Extended mit mehr als 18 Stellen
Kurze Zwischenfrage eines Dummen: Wie schreibt man einen neuen Typ? Also wie man Typen deklariert ist mir klar, aber wie kann ich einen neuen Zahlentyp deklarieren? Muss ich da mit Assembler arbeiten?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:31 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