33 lines
1.6 KiB
Text
33 lines
1.6 KiB
Text
\\ version 2
|
|
Module Checkit {
|
|
function global isNumber(a$, de$=".") {
|
|
=false=true ' return boolean
|
|
if de$="" then de$=str$(.1,".") ' get current decimal point character
|
|
a$=trim$(ucase$(a$))
|
|
m=len(a$)
|
|
if m=0 then exit
|
|
c$=filter$(a$,"0123456789")
|
|
if c$ = "" then {
|
|
=true
|
|
} else.if m>1 then {
|
|
\ may have -+ and ,
|
|
if m=2 then {
|
|
if not c$~"[-+\"+de$+"]" then break
|
|
} else {
|
|
if left$(c$,1 ) ~"[+-]" then c$=mid$(c$, 2)
|
|
if not (c$=de$ or c$=de$+"E" or c$ ~ de$+"E[+-]") then break
|
|
if c$ ~ de$+"E[+-]" then if not (instr(a$,"E+")>0 or instr(a$,"E-")>0) then break
|
|
}
|
|
if de$<>"." then a$=replace$(de$, ".", a$, 1,1)
|
|
try {inline "a="+a$+"=="+a$}
|
|
if valid(a) then =a = true=true ' return boolean
|
|
}
|
|
}
|
|
Print isNumber("+1"), isnumber("-1"), isNumber("1+")=false, isnumber("1-")=false
|
|
Print isNumber(",1",","), isnumber("1,",","), isNumber(",0",","), isnumber("0,", ",")
|
|
Print isNumber(".1"), isnumber("1."), isNumber(".0"), isnumber("0.")
|
|
Print isNumber("+.1"), isnumber("-1."), isNumber(".12e+232"), isnumber("0.122e10")
|
|
Print isNumber("+.1a")=false, isnumber("asasa1212")=false, isNumber("1.2e43+23")=false, isnumber("0.122e10")
|
|
Print isNumber("1221.211.1221")=false, isnumber("1221e1212")=false, isNumber("1.2e4323")=false, isnumber("-.122e-10")
|
|
}
|
|
Checkit
|