Wie kann ich sie auf einfachste Weise mit Tausendertrennzeichen anzeigen?
-
- Beiträge: 1
- Registriert: Sa 1. Jul 2023, 03:52
Wie kann ich sie auf einfachste Weise mit Tausendertrennzeichen anzeigen?
In meinem Programm gibt es enorme Zahlen, die für niemanden zu erkennen sind. Wie kann ich sie auf einfachste Weise mit Tausendertrennzeichen anzeigen?
Re: Wie kann ich sie auf einfachste Weise mit Tausendertrennzeichen anzeigen?
Es gibt zwei Möglichkeiten: Die Format-Anweisung mit dem %n-Format, und die FormatFloat-Anweisung mit einem Komma vor dem Dezimalpunkt:
Code: Alles auswählen
var
x: Double = 1.2345E6;
s: String;
..
// String mit zwei Nachkommastellen
s := Format('%.2n', [x]);
s := FormatFloat('#,##0.00', x); // es geht auch kürzer, aber weniger verständlich: ',0.00'
Zuletzt geändert von wp_xyz am Sa 26. Aug 2023, 12:53, insgesamt 1-mal geändert.
Re: Wie kann ich sie auf einfachste Weise mit Tausendertrennzeichen anzeigen?
ich habe vor Jahren mal eine Unit Stdio geschrieben, die solche Ausgaben für verschiedene Datentypen macht. alles selbst programmiert in Pascal, die Format-Anweisung kannte ich damals noch nicht, jedenfalls nicht in Pascal, nur in Java o.ä. Sollte noch funzen, bei Interessen schreib mir eine PN
Re: Wie kann ich sie auf einfachste Weise mit Tausendertrennzeichen anzeigen?
Viele Zahlentypen lassen sich für das menschliche Auge (und Gehirn) oftmals besser lesen wenn man sie für die Darstellung kürzt.
Als Beispiel für Byte:
Wobei man Byte mit vielen anderen Betitelungen austauschen kann, Herz, Ohm, Watt und so weiter ...
Zumindest finde ich es dargestellt so besser lesbar anstelle einer ewig langen Zahl mit wer weiß wieviel tausender Trennpunkten.
Als Beispiel für Byte:
Code: Alles auswählen
function SizeToString(const ASize: UInt64; const oneKB: Integer = {$IFDEF MSWINDOWS}1024{$ELSE}1000{$ENDIF}): string;
var
Calc: Extended;
Sign: String;
SizeLength: Integer;
begin
SizeLength := 0;
Calc := ASize;
while (Calc > oneKB) do
begin
Calc := Calc / oneKB;
Inc(SizeLength);
end;
case SizeLength of
0: Sign := ' byte';
1: Sign := ' kb'; // Kilo Byte
2: Sign := ' mb'; // Mega Byte
3: Sign := ' gb'; // Giga Byte
4: Sign := ' tb'; // Tera Byte
5: Sign := ' pb'; // Peta Byte
6: Sign := ' eb'; // Exa Byte
7: Sign := ' zb'; // Zetta Byte
8: Sign := ' yb'; // Yotta Byte
9: Sign := ' rb'; // Ronna Byte
10:Sign := ' qb'; // Quetta Byte
else
Sign :=' (' + IntToStr(SizeLength) + ')';
end;
Result := FormatFloat('#,##0.00', Calc) + Sign;
end;
Zumindest finde ich es dargestellt so besser lesbar anstelle einer ewig langen Zahl mit wer weiß wieviel tausender Trennpunkten.
Zuletzt geändert von KodeZwerg am Sa 39. Okt 6043, 29:87, insgesamt 43-mal geändert.
-
- Lazarusforum e. V.
- Beiträge: 129
- Registriert: Sa 26. Mai 2012, 17:31
- OS, Lazarus, FPC: Win 10 (L 2.2.6 x64 FPC 3.2.2)
- CPU-Target: 64Bit
Re: Wie kann ich sie auf einfachste Weise mit Tausendertrennzeichen anzeigen?
Aber 7.45 k€ auf einer Rechnung sieht schon blöd aus...
just my two Beer
Re: Wie kann ich sie auf einfachste Weise mit Tausendertrennzeichen anzeigen?
Es war nirgends die Rede von Währungen.
Sinn sollte das ganze schon machen, Beispielhaft liest es sich in einer Rechnung einfacher wenn 1000 Kg anstelle von 1000000 Gramm stünde, mit oder ohne Tausendertrennzeichen.
Zuletzt geändert von KodeZwerg am Sa 39. Okt 6043, 29:87, insgesamt 43-mal geändert.