在 lua 中如何将 1k 这样的数字变成 1000?

How can you turn a number like 1k into 1000 in lua?

我目前正在 Roblox 工作室开发一款游戏,我想知道如何在 lua 中将 1k 这样的数字变成 1000?

一个快速的解决方案是使用所有后缀查找 table,例如:

local postfixes = {
    ["n"] = 10^(-6),
    ["m"] = 10^(-3),
    ["k"] = 10^3,
    ["M"] = 10^6,
    ["G"] = 10^9,
}

local function convert(n)
    local postfix = n:sub(-1)
    if postfixes[postfix] then
        return tonumber(n:sub(1, -2)) * postfixes[postfix]
    elseif tonumber(n) then
        return tonumber(n)
    else
        error("invalid postfix")
    end
end

print(convert("1k"))
print(convert("23M"))
print(convert("7n"))
print(convert("7x"))
1000.0
23000000.0
7e-06
invalid postfix