Lua将字符串转换为数字-依赖于地区设置。

刚注意到 Lua 中的 tostring()tonumber() 是区域设置相关的。有没有想法如何在不使用 tonumber() 的情况下将字符串转换为数字?谢谢。

例如,将字符串“-58.5”转换为-58.5。

另外,当我尝试将带有点的数字传递给函数时,该函数会自动将“。”转换为“,”。您通常如何解决这种问题?

function test(num) print(num) end

test(-58.5) -- 它打印-58,5

点赞
用户26702
用户26702

你的 test 函数的结果本身取决于所在的语系。(在我的机器上,使用默认设置得到的结果是 -58.5,因为我的语系是 en_US.UTF-8。)

你可以通过 os.setlocale 来设置自己想要的语系,这可能比写自己的 tonumber 函数更简单。

例如:

local function nshow(n) print(n) end
local n = -58.5

print(os.setlocale("de_DE.UTF-8"))
nshow(n)
print(os.setlocale("C"))
nshow(n)

输出:

de_DE.UTF-8
-58,5
C
-58.5
2016-01-25 23:14:45