From 78c4de7f6c411f466d3b27f52a2336b3edb2c940 Mon Sep 17 00:00:00 2001 From: FellippeHeitor Date: Mon, 1 Oct 2018 11:19:28 -0300 Subject: [PATCH] Adapts isnumber() to recognize scientific notation. --- source/qb64.bas | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/source/qb64.bas b/source/qb64.bas index ca9412b65..48c8a443e 100644 --- a/source/qb64.bas +++ b/source/qb64.bas @@ -18832,17 +18832,31 @@ FUNCTION isnumber (a$) FOR i = 1 TO LEN(a$) a = ASC(MID$(a$, i, 1)) IF a = 45 THEN - IF i <> 1 THEN EXIT FUNCTION - GOTO isnumok + IF i = 1 OR (i > 1 AND (d = i - 1 OR e = i - 1)) THEN _CONTINUE + EXIT FUNCTION END IF IF a = 46 THEN IF dp = 1 THEN EXIT FUNCTION dp = 1 - GOTO isnumok + _CONTINUE END IF - IF a >= 48 AND a <= 57 THEN v = 1: GOTO isnumok + IF a = 100 OR a = 68 THEN 'D + IF d > 1 OR e > 1 THEN EXIT FUNCTION + d = i + _CONTINUE + END IF + IF a = 101 OR a = 69 THEN 'E + IF d > 0 OR e > 1 THEN EXIT FUNCTION + e = i + _CONTINUE + END IF + IF a = 43 THEN '+ + IF d = i - 1 OR e = i - 1 THEN _CONTINUE + EXIT FUNCTION + END IF + + IF a >= 48 AND a <= 57 THEN _CONTINUE EXIT FUNCTION - isnumok: NEXT isnumber = 1 END FUNCTION