Lua将字符串转换为数字 - 依赖于语言环境

时间:2016-01-25 22:45:53

标签: lua locale

注意Lua中的 tostring() tonumber()是依赖于语言环境的。知道如何在不使用 tonumber()的情况下将字符串转换为数字?感谢。

e.g。转换字符串" -58.5"到-58.5

当我尝试将带点的数字传递给函数时,该函数会转换"。"到","自动。你通常如何解决这类问题?

  

功能测试(num)        打印(NUM)   端

     

测试(-58.5) - 它打印-58,5

1 个答案:

答案 0 :(得分:3)

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