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 |
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 ! |
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. |
AW: Extended To String mit dekadischen Einheiten
Zitat:
Delphi-Quellcode:
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.
FloatToStrS(Zahl, True, True, '', 3, 0)
Nochmal: Statt "1E3 Mega" oder "1000 Mega" sollte "1 Giga" herauskommen. Gleiches natürlich für die anderen Einheiten. |
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 |
AW: Extended To String mit dekadischen Einheiten
Jetzt passt es, danke! :thumb:
|
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 |
AW: Extended To String mit dekadischen Einheiten
Keine Idee?
|
AW: Extended To String mit dekadischen Einheiten
Zitat:
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. |
AW: Extended To String mit dekadischen Einheiten
Zitat:
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. |
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