AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zahlenausgabe

Ein Thema von Nickless · begonnen am 6. Jan 2004 · letzter Beitrag vom 7. Jan 2004
Antwort Antwort
Nickless

Registriert seit: 5. Dez 2003
6 Beiträge
 
#1

Zahlenausgabe

  Alt 6. Jan 2004, 15:03
Hi ho,

ich hab da ma son Problem (was auch sonst )

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
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Zahlenausgabe

  Alt 6. Jan 2004, 15:09
Hi,

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

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#3

Re: Zahlenausgabe

  Alt 6. Jan 2004, 20:04
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 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).
gruß, choose
  Mit Zitat antworten Zitat
Nickless

Registriert seit: 5. Dez 2003
6 Beiträge
 
#4

Re: Zahlenausgabe

  Alt 7. Jan 2004, 08:06
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
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#5

Re: Zahlenausgabe

  Alt 7. Jan 2004, 08:34
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...
gruß, choose
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:51 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