Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Zahlenausgabe (https://www.delphipraxis.net/14301-zahlenausgabe.html)

Nickless 6. Jan 2004 15:03


Zahlenausgabe
 
Hi ho,

ich hab da ma son Problem (was auch sonst :lol: )

und zwar will ich Zahlen ausgeben die recht groß sind.

aber mein Delphi gibt die ab ner bestimmten größe im Format 1,30496954492866E15 aus, und das möchte ich nicht.

Wie bekomme ich das hin das er die Zahl in der Normalen Form ausgibt (1304969544928660) ?

Ich wil nicht nur einfach das komma rausnehmen und eine null dranhängen, denn bei zahlen die noch wesentlich größer werden wird das zu ungenau.

Delphi-Quellcode:
zahl2 : double;
...
form1.ListBox1.Items.Add(floattostr(zahl2));


Danke schonmal im vorraus

sakura 6. Jan 2004 15:09

Re: Zahlenausgabe
 
Hi,

Delphi unterstützt solche Zahlen nicht direkt, aber hier findest das was zum Thema.

...:cat:...

choose 6. Jan 2004 20:04

Re: Zahlenausgabe
 
Hallo Nickless,

falls Du mit Zahlen arbeitest, die zwar in einen Double oder Extended Datentyp passen, aber durch die Funktion FloatToStr "abgekürzt" werden, solltest Du stattdessen FloatToStrF (siehe OH) verwenden.
Der Aufruf von FloatToStr entspricht dem von FloatToStrF mit ffGeneral zu dem in der OH folgendes zu entnehmen ist:
Zitat:

Zitat von OH
[..]The value is converted to the shortest possible decimal string [..] if the value is greater than or equal to 0.00001. Otherwise the resulting string uses scientific format [..].

Das gewünschte Ergebnis solltest Du folglich mit ffFixed erreichen.

Es bleiben trotzdem die physischen Grenzen des Datentyps, bzw. die der Anzeige (zB 18 Nachkommastellen).

Nickless 7. Jan 2004 08:06

Re: Zahlenausgabe
 
Danke soweit schonmal, das mit dem floattostrf hat schonmal gut geklappt, aber ich habe eigendlich vor nur ganzzahlen zu machen.

Wenn euch die Fibonacci-Reihe was sagt, dann wisst ihr das ich nur Ganzzahlen brauche.

Was tun sprach Zeus, bei E18 fängt er weider an im falschen format anzuzeigen.


Gruß

Nickless

choose 7. Jan 2004 08:34

Re: Zahlenausgabe
 
Wenn Du tatsächlich mit ganzzahligen Folgen und Reihen arbeitest, solltest Du keine Fließkomma-Datentypen sondern stattdessen, eine Implementierung, die auf ganzen Zahlen beruht, verwenden.
Der größte Datentyp, den Delphi "von Haus aus" zu diesem Zweck anbietet ist Int64 und hat Wertebereich von ungefähr -9e18..9e18
Solltest Du großere Zahlen benötigen, was Dein Posting impliziert, solltest Du auf eine andere Implementierung, wie von Sakura vorgeschlagen, zurückgreifen.

Bei Betrachtungen, die eine Annäherung an die Kaninchenkonstante zeigen oder etwa den goldenen Schnitt demonstrieren sollen, wirst Du hingegen nicht an Fließkommazahlen vorbeikommen, weil diese Zahlen nicht rational sind. Es gibt aber auch Implementierungen von "Software Fließkommazahlen", die für die Größenordnungen geeignet sein sollten.

Falls Dir die derzeitige Lösung ausreicht, Du also lediglich ein Problem mit der Darstellung hast und es auf Performance nicht ankommt, weil die Konvertierung zum String nur abschließend geschieht, kannst Du auch eine eigene Implementierung von FloatToStr, die nur den ganzzahligen positiven Teil betrachtet, in Erwägung ziehen...


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:24 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