Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Neuen Beitrag zur Code-Library hinzufügen (https://www.delphipraxis.net/33-neuen-beitrag-zur-code-library-hinzufuegen/)
-   -   Delphi Extended To String mit dekadischen Einheiten (https://www.delphipraxis.net/136103-extended-string-mit-dekadischen-einheiten.html)

himitsu 21. Mär 2016 10:05

AW: Extended To String mit dekadischen Einheiten
 
Ersmal: Nicht Extended verwenden, sondern Double.
Im Grunde was Extended nicht für die Verwendung vorgesehen, sondern "nur" für die internen Berechnungen der FPU.
In 64 Bit gibt es Extended daher auch nicht mehr. (der Delphi-Compiler verwendet an der Stelle "heimlich" Double)

Extended kann bis zu 4951 Nachkommastellen haben und Double auch immernoch 324.
Wenn es nicht genau 0 wird, dann die kann Schleife viel öfters durchlaufen, als gewollt.

markus5766h 21. Mär 2016 11:34

AW: Extended To String mit dekadischen Einheiten
 
Zitat:

Zitat von himitsu (Beitrag 1333435)
Ersmal: Nicht Extended verwenden, sondern Double.
Im Grunde was Extended nicht für die Verwendung vorgesehen, sondern "nur" für die internen Berechnungen der FPU.
In 64 Bit gibt es Extended daher auch nicht mehr. (der Delphi-Compiler verwendet an der Stelle "heimlich" Double)

Extended kann bis zu 4951 Nachkommastellen haben und Double auch immernoch 324.
Wenn es nicht genau 0 wird, dann die kann Schleife viel öfters durchlaufen, als gewollt.

o.k., danke --> dann spar' ich mir ja noch zwei Byte :-D

. . . überarbeitet

Luckie 21. Mär 2016 19:32

AW: Extended To String mit dekadischen Einheiten
 
Und bitte übernimm nicht den Tippfehler von himitsu. Es heißt Epsilon und nicht Expsilon. :roll:

markus5766h 21. Mär 2016 20:51

AW: Extended To String mit dekadischen Einheiten
 
ups :shock:

himitsu 22. Mär 2016 10:01

AW: Extended To String mit dekadischen Einheiten
 
Neee, das ist doch kein Fehler ... war nur von Expstep geguttenbergt. :oops:

CodeX 12. Nov 2016 02:12

AW: Extended To String mit dekadischen Einheiten
 
Zunächst: Danke für die Funktion! Habe gerade genau nach so etwas gesucht.

Ist die aktuellste Version im Beitrag #5?
Wenn ja, dann ist dort Tera immer noch falsch geschrieben.
Zudem sollte es vermutlich Eliminate statt Eleminate heißen (wenn damit "eliminieren" gemeint ist).

Meine eigentliche Frage bezieht sich jedoch auf die Anzahl der Vorkommastellen. Ist hierfür Accuracy vorgesehen? Wie kann ich denn festlegen, dass ab 4 Vorkommastellen in die nächste Einheit gewechselt werden soll?
Delphi-Quellcode:
FloatToStrS(1000000000, True, True, '', 3, 0)
liefert "1E3 M"
Delphi-Quellcode:
FloatToStrS(1000000000, True, True, '', 4, 0)
liefert "1.000 M"
Wie komme ich denn zu "1 G"?

t.roller 12. Nov 2016 08:30

AW: Extended To String mit dekadischen Einheiten
 
Vorsätze für Maßeinheiten

CodeX 12. Nov 2016 10:13

AW: Extended To String mit dekadischen Einheiten
 
Zitat:

Zitat von t.roller (Beitrag 1353424)

Was willst du mir damit sagen? :?

markus5766h 12. Nov 2016 18:35

AW: Extended To String mit dekadischen Einheiten
 
Zitat:

Zitat von CodeX (Beitrag 1353422)
Zunächst: Danke für die Funktion! Habe gerade genau nach so etwas gesucht.

Ist die aktuellste Version im Beitrag #5?
Wenn ja, dann ist dort Tera immer noch falsch geschrieben.
Zudem sollte es vermutlich Eliminate statt Eleminate heißen (wenn damit "eliminieren" gemeint ist).

Meine eigentliche Frage bezieht sich jedoch auf die Anzahl der Vorkommastellen. Ist hierfür Accuracy vorgesehen? Wie kann ich denn festlegen, dass ab 4 Vorkommastellen in die nächste Einheit gewechselt werden soll?
Delphi-Quellcode:
FloatToStrS(1000000000, True, True, '', 3, 0)
liefert "1E3 M"
Delphi-Quellcode:
FloatToStrS(1000000000, True, True, '', 4, 0)
liefert "1.000 M"
Wie komme ich denn zu "1 G"?

Hab' den Post # 5 noch mal geändert :
FloatToStrS(1000000000, False, False, 6, 0) sollte 1 G ergeben.

CodeX 12. Nov 2016 19:43

AW: Extended To String mit dekadischen Einheiten
 
Sorry, aber irgendwie passt das nicht. Ist jetzt noch falscher als vorher.

Zum Testen:
Delphi-Quellcode:
  for i := 0 to 9 do
  begin
    Number := Power(10, i);
    s := s + FloatToStrS(Number, False, False, '', 3, 0) + #13#10;
  end;
  ShowMessage(s);
Erwartete Ausgabe:
Code:
1
10 
100 
1 Kilo
10 Kilo
100 Kilo
1 Mega
10 Mega
100 Mega
1 Giga
Alte Version:
Code:

10 
100 
1E3 
10 Kilo
100 Kilo
1E3 Kilo
10 Mega
100 Mega
1E3 Mega
Neue Version:
Code:
0 Kilo
0 Kilo
0 Kilo
1 Kilo
0 Mega
0 Mega
1 Mega
0 Giga
0 Giga
1 Giga


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:11 Uhr.
Seite 2 von 3     12 3      

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