From da48d9eb5719a43d4a198e712674dff2235796e1 Mon Sep 17 00:00:00 2001 From: longquan0104 Date: Sun, 2 Jun 2024 23:51:00 +0700 Subject: [PATCH] Issue #491 : Add a condition to check to parseFloat or parseInt --- _lua5.1-tests/math.lua | 1 + baselib.go | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/_lua5.1-tests/math.lua b/_lua5.1-tests/math.lua index 21429a6f..f82ed6c1 100644 --- a/_lua5.1-tests/math.lua +++ b/_lua5.1-tests/math.lua @@ -52,6 +52,7 @@ assert(tonumber(string.rep('1', 32), 2) + 1 == 2^32) assert(tonumber('-fffffFFFFF', 16)-1 == -2^40) assert(tonumber('ffffFFFF', 16)+1 == 2^32) assert(tonumber('0xF') == 15) +assert(tonumber('5e-07') == 0.0000005) assert(1.1 == 1.+.1) print(100.0, 1E2, .01) diff --git a/baselib.go b/baselib.go index aa2c08a9..af095068 100644 --- a/baselib.go +++ b/baselib.go @@ -410,7 +410,7 @@ func baseToNumber(L *LState) int { L.Push(lv) case LString: str := strings.Trim(string(lv), " \n\t") - if strings.Index(str, ".") > -1 { + if strings.Contains(str, ".") || strings.ContainsAny(str, "eE") { if v, err := strconv.ParseFloat(str, LNumberBit); err != nil { L.Push(LNil) } else {