Eine Zahlenformatierungsfunktion

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
Dostej
Beiträge: 529
Registriert: 01.10.2004 10:02
Kontaktdaten:

Eine Zahlenformatierungsfunktion

Beitrag von Dostej »

Ich hab ne Funktion für mein Projekt geschrieben, die Longs als nett formatierte Zahlen ausgibt. Nichts wirklich besonderes

Code: Alles auswählen

Procedure.s StrAF(number.l)
  back.s
  t.s = Str(number)
  l.l = Len(t)
  If Left(t, 1) = "-"
    t = Right(t, l-1)
    l-1
    neg.l = 1
  EndIf
  If l < 3 ; wenn weniger stellen da sind
    t = Left("000", 3-l) + t
    l = 3
  EndIf
  If l <= 4 ; 1 oder 2 Stellen vor dem Komma
    If l = 3
      back = Left(t, l-2) + "." + Right(t, l-1)
    Else
      back = Left(t, l-2) + "." + Right(t, l-2)
    EndIf
  Else
    t = Left(t, l-2)
    l-2
    While l > 3
      back = "'" + Right(t, 3) + back 
      l-3
      t = Left(t, l)
    Wend
    back = t + back
  EndIf 
  If neg
    back = "-" + back
  EndIf
  ProcedureReturn back
EndProcedure


Debug StrAF(2)
Debug StrAF(12)
Debug StrAF(342)
Debug StrAF(3472)
Debug StrAF(83472)
Debug StrAF(344472)
Debug StrAF(123456789)
Debug StrAF(-2)
Debug StrAF(-12)
Debug StrAF(-342)
Debug StrAF(-3472)
Debug StrAF(-83472)
Debug StrAF(-344472)
Debug StrAF(-123456789)
Das Ergebnis sieht dann so aus...

Code: Alles auswählen

0.02
0.12
3.42
34.72
834
3'444
1'234'567
-0.02
-0.12
-3.42
-34.72
-834
-3'444
-1'234'567
Vielleicht kanns ja jemand gebrauchen
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Eine Zahlenformatierungsfunktion

Beitrag von Kiffi »

> Ich hab ne Funktion für mein Projekt geschrieben, die Longs als nett
> formatierte Zahlen ausgibt

generell: Nicht schlecht!

Schöner wär's allerdings, wenn Du für die Formatierung der Zahlen die in der
Systemsteuerung unter Ländereinstellungen eingegebenen
Dezimaltrennzeichen und Trenner für Zifferngruppierungen verwenden
würdest. Diese Infos kannst Du mit GetLocaleInfo_() ermitteln.

Grüße ... Kiffi
Hygge
Benutzeravatar
Dostej
Beiträge: 529
Registriert: 01.10.2004 10:02
Kontaktdaten:

Beitrag von Dostej »

@Kiffi. Danke.
Ich hege für mein Projekt noch die Hoffnung, es evtl. mal auf die anderen Systeme zu porten, daher wollte ich möglichst wenig API Aufrufe verwenden. Vermutlich wird es so was auch unter Linux und Mac geben, damit kenn ich mich aber überhaupt nicht aus...
Antworten