使用字符串值有没有办法让数字超过lua中的整数最大值?

时间:2016-05-14 01:27:50

标签: lua roblox

我正在谈论rbx.Lua,所以如果你不太了解它,不要试着回答这个问题

function ConvertShort(num, cool)
    local x = tostring(num)
    if #x >= 16 then
        local important = (#x - 15)
        cool.Value = x:sub(0,(important)).."."..(x:sub(#x-13,(#x-13))).."qd"
    elseif #x >= 13 then
        local important = (#x-12)
        cool.Value = x:sub(0,(important)).."."..(x:sub(#x-10,(#x-10))).."T"
    elseif #x>= 10 then
        local important = (#x - 9)
         cool.Value = x:sub(0,(important)).."."..(x:sub(#x-7,(#x-7))).."B"
    elseif #x >= 7 then
        local important = (#x-6)
        cool.Value = x:sub(0,(important)).."."..(x:sub(#x-5,(#x-5))).."M"
    elseif #x >= 4 then
        cool.Value =  x:sub(0,(#x-3)).."."..(x:sub(#x-2,(#x-2))).."k"
    end
end

game.Players.PlayerAdded:connect(function(plr)
    local cash = Instance.new("StringValue", plr)
    cash.Name = "cash"
    cash.Value = "0"
    cash.Changed:connect(function()
            ConvertShort(tonumber(cash.Value), cash)
    end)
end)

所以,当它达到四十亿时它会显示一个像1e + 1.1k这样的nubmer,这不是我需要它的样子,我需要它更像是" 1qd" ,我不知道如何解决这个问题,或者是否有办法。

2 个答案:

答案 0 :(得分:0)

替换

local x = tostring(num)

使用此代码:

local x = ""
while num >= 1000000 do
  x, num = x.."0", math.floor(num / 10)
end
x = tostring(num)..x

答案 1 :(得分:0)

替换

local x = tostring(num)

local x = string.format("%.0f", num)