Delphi-PRAXiS
Seite 3 von 3     123   

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)

markus5766h 12. Nov 2016 19:56

AW: Extended To String mit dekadischen Einheiten
 
Liste der Anhänge anzeigen (Anzahl: 2)
@ CodeX

Du musst die Anzahl der Digits schon hoch setzen, sonst erwischt Du nur die 1000er !
siehe Screenshot
... oder Eliminate verwenden - siehe Screenshot 2

CodeX 12. Nov 2016 20:30

AW: Extended To String mit dekadischen Einheiten
 
Naja, Sinn ist es doch, dass ich einfach eine Zahl übergebe und diese mit einer optimalen Formatierung erhalte, ohne mir Gedanken zu machen, wie viele Stellen die Zahl hat bzw. ohne weitere Parameter anzupassen.
Dein zweiter Screenshot zeigt das Problem doch auch: Warum sind es 1.000 Mega und nicht 1 Giga? Sobald die nächst größere Einheit mit Zahl vor dem Komma erreicht ist, sollte doch auch in diese gewechselt werden.

Das wäre wie gesagt die gewünschte Ausgabe:
Code:

1
10 
100 
1 Kilo    !
10 Kilo
100 Kilo
1 Mega    !
10 Mega
100 Mega
1 Giga    !

markus5766h 12. Nov 2016 20:45

AW: Extended To String mit dekadischen Einheiten
 
was soll den die optimale Formatierung sein ?
Diese ist in jedem Fall erst mal von der Verwendung abhängig,
z.B. beim Messen elektrischer Größen benötige ich bei einer
Bauteilangebe von : Toleranz = ±0,02 % mind. 4 Nachkommastellen,
um dieses Bauteil beurteilen zu können.
Woher soll die Funktion wissen, wie viele Nachkomastellen -
oder Vorkommastellen ich haben möchte ?

o.k. an dem Wechsel zu den 1000er-Stellen muss ich noch mal nachschauen,
die Anzahl der Vor- oder Nachkommastellen soll jedenfalls weiterhin mit
übergeben werden.

CodeX 12. Nov 2016 20:54

AW: Extended To String mit dekadischen Einheiten
 
Zitat:

Zitat von markus5766h (Beitrag 1353479)
die Anzahl der Vor- oder Nachkommastellen soll jedenfalls weiterhin mit übergeben werden.

Nichts anderes versuche ich zu erfragen bzw. zu empfehlen. So wie ich die Funktion verstanden habe, sollte per
Delphi-Quellcode:
FloatToStrS(Zahl, True, True, '', 3, 0)
eine Formatierung herauskommen, die ab 4 Vorkommastellen in die nächste Einheit wechselt und keine Nachkommastellen hat. Stattdessen kommt sowas wie "1E3 Mega" raus. Das halte ich für falsch. Da sollte in dem Fall "1 Giga" stehen.

Nochmal: Statt "1E3 Mega" oder "1000 Mega" sollte "1 Giga" herauskommen. Gleiches natürlich für die anderen Einheiten.

markus5766h 12. Nov 2016 21:14

AW: Extended To String mit dekadischen Einheiten
 
Liste der Anhänge anzeigen (Anzahl: 1)
@ CodeX

... so sollte es gehen, ist bestimmt noch verbesserbar, liefert aber erstmal das gewünschte Ergebnis.

Post # 5 aktualisiert

CodeX 12. Nov 2016 23:13

AW: Extended To String mit dekadischen Einheiten
 
Jetzt passt es, danke! :thumb:

CodeX 8. Jun 2017 11:06

AW: Extended To String mit dekadischen Einheiten
 
Ich möchte ja nicht wieder "meckern", aber es funktioniert wohl doch noch nicht richtig. Bei runden Zahlen klappt das (wie in Deinem Screenshot zu sehen), aber ab 102 kommt nur Quatsch:
Delphi-Quellcode:
  for i := 0 to 2000 do
    Memo1.Lines.Add(IntToStr(i) +': '+ FloatToStrS(i, True, True, '', 3, 0));
Code:
99: 99
100: 100
101: 101
102: 0 K
103: 0 K
...
498: 0 K
499: 0 K
500: 1 K
501: 1 K
...
1498: 1 K
1499: 1 K
1500: 2 K
1501: 2 K

CodeX 17. Jun 2017 12:47

AW: Extended To String mit dekadischen Einheiten
 
Keine Idee?

markus5766h 19. Jun 2017 17:54

AW: Extended To String mit dekadischen Einheiten
 
Zitat:

Zitat von CodeX (Beitrag 1374754)
Keine Idee?

doch . . . setz mal die Digit's auf 3,
dann bekommst Du bei einem Ausgangswert von 498 ----> 0,498 K.
Wenn dagegen die Anzahl der Nachkommastellen auf 0 steht, kann da nichts Vernünftiges bei 'raus kommen.

CodeX 19. Jun 2017 20:47

AW: Extended To String mit dekadischen Einheiten
 
Zitat:

Zitat von markus5766h (Beitrag 1374911)
Wenn dagegen die Anzahl der Nachkommastellen auf 0 steht, kann da nichts Vernünftiges bei 'raus kommen.

Warum denn nicht? Das ist doch genau meine Absicht, damit nur Ganzzahlen zu erhalten. Ich möchte ja eben keine Nachkommastellen haben.
Du willst doch nicht sagen, dass es so gewollt ist:
101 -> 101
102 -> 0 K

Was macht es für einen Sinn, dass 102-499 in 0 K umgewandelt werden, und 500-999 in 1 K? Es sind nur 3 Stellen, daher brauchen sie ja nicht in die nächsthöhere Einheit umgewandelt werden. Erst bei 1000 - 1999 müsste es 1 K sein (bei 0 Nachkommastellen).


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:26 Uhr.
Seite 3 von 3     123   

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