I am not aware of a built-in "get the current decimal separator" function and I needed one because I have a program in which the system calls usually deliver "0." but ocassionally return "0".
So, I needed to find out whether to add a "." or a ",".
This seems to work - but could there be a "fix 0" mode which might hide the separator?
Code:
EXPORT DecSepNow()
//RETURN current system decimal separator
BEGIN
LOCAL ST:=STRING(π);//ANY REAL
LOCAL DOT:=INSTRING(ST,".");
LOCAL COM:=INSTRING(ST,",");
RETURN MID(ST,MAX(DOT,COM),1);
END;
Or is there a better way?
(02-05-2018 08:32 AM)StephenG1CMZ Wrote: [ -> ]This seems to work - but could there be a "fix 0" mode which might hide the separator?
It doesn't work in FIX 0 as in this number format mode STRING(π) returns "3".
Instead, you can use the Home Settings variable HSeparator, this should work whatever the number format:
Code:
EXPORT DecSepNow()
//RETURN current system decimal separator
BEGIN
RETURN IFTE((HSeparator MOD 9)<4,".",",");
END;
Another way of doing it based on your program would be to force the number of digits after the decimal separator:
Code:
EXPORT DecSepNow()
//RETURN current system decimal separator
BEGIN
LOCAL ST,ND:=HDigits;
HDigits:=1; //Set number of digits after the decimal separator to 1
ST:=STRING(π); //Set ST to "3.1" or "3,1"
HDigits:=ND; //Restore number of digits after the decimal separator
RETURN ST(2,1); //Return second character of ST
END;
Of the two, I much prefer your version reading Hseparator. Thank you.
I try to avoid solutions that change modes and then restore them - unless there is no other way - as there is always the risk that the user will interrupt a program at just the wrong time - and then wonder what has changed the settings.
(02-05-2018 10:35 AM)StephenG1CMZ Wrote: [ -> ]Of the two, I much prefer your version reading Hseparator. Thank you.
I try to avoid solutions that change modes and then restore them - unless there is no other way - as there is always the risk that the user will interrupt a program at just the wrong time - and then wonder what has changed the settings.
Even worse are programs that change modes and
don't restore them!
Oh! this is something useful to identify when using EXPR()