Hello!
I've updated my code which groups high numbers:
100 => 100
1000 => 1.000
-65536 => -65,536
The separator can be chosen at will. This us useful, because of the different languages world-wide. The germans use a dot "." to group the numbers; however, the english use a comma ",".
My procedure supports quads, ASCII+Unicode.
Code: Select all
Procedure.s groupNumber(number.q, separator.s=".")
If number > -1000 And number < 1000
ProcedureReturn Str(number)
EndIf
Protected number$=RemoveString(Str(number), "-"), start.l=Len(number$)%3, res.s=PeekS(@number$, start), n.l
For n=start To Len(number$)-start-1 Step 3
res+separator+PeekS(@number$+n*SizeOf(Character), 3*SizeOf(Character))
Next
If start
If number < 0
res="-"+res
EndIf
ProcedureReturn res
Else
If number < 0
ProcedureReturn "-"+PeekS(@res+Len(separator)*SizeOf(Character))
Else
ProcedureReturn PeekS(@res+Len(separator)*SizeOf(Character))
EndIf
EndIf
EndProcedure
Debug groupNumber(1234567890)
Debug groupNumber(123456789)
Debug groupNumber(12345678)
Debug groupNumber(1234567)
Debug groupNumber(123456)
Debug groupNumber(12345)
Debug groupNumber(1234)
Debug groupNumber(123)
Debug groupNumber(12)
Debug groupNumber(1)
Debug groupNumber(0)
Debug groupNumber(-1)
Debug groupNumber(-12)
Debug groupNumber(-123)
Debug groupNumber(-1234)
Debug groupNumber(-12345)
Debug groupNumber(-123456)
Debug groupNumber(-1234567)
Debug groupNumber(-12345678)
Debug groupNumber(-123456789)
Debug groupNumber(-1234567890)
A procedure which is very short (ASCII only) can be found on page 1 of this german forum thread: http://www.purebasic.fr/german/viewtopi ... ight=AND51