I tried searching for a function in the manual for one, but couldn't find anything.
I made:
Code: Select all
Macro IntLen(Number)
Len(Str(Number))
EndMacro
It works perfectly. Just looks blerg and not right to me.
Code: Select all
Macro IntLen(Number)
Len(Str(Number))
EndMacro
Code: Select all
Procedure.i ML_nDigits(IntNumber.q)
Protected.i nDigits
If IntNumber <> 0
While IntNumber <> 0
IntNumber / 10
nDigits + 1
Wend
Else
nDigits = 1
EndIf
ProcedureReturn nDigits
EndProcedure
Debug ML_nDigits(9223372036854775807)
Debug ML_nDigits(0)
Debug ML_nDigits(1.23456)
Code: Select all
Procedure.i NumberLength(number.q)
If number = 0
ProcedureReturn 1
EndIf
If number < 0
ProcedureReturn Int(Log10(-number)) + 2 ; +2 for storing the sign.
Else
ProcedureReturn Int(Log10(number)) + 1
EndIf
EndProcedure