Cómo abreviar la gran cantidad de monedas de oro en el juego

La visualización directa de una gran cantidad de números de monedas de oro en el juego dará como resultado un diseño de interfaz de interfaz de usuario atractivo, por lo que aquí debemos abreviar la cantidad de monedas.

como :

1000->1000

10000->10.0K

1000000->1.00M

1000000000->1.00B

1000000000000->1.00T

y abreviaturas similares.

Entonces, ¿cómo abreviar la gran cantidad de monedas de oro en el juego?

Aquí hay tres métodos escritos en lenguaje Lua, cada uno con sus propias ventajas y desventajas, según sus necesidades.

Yo uso el método dos.

método uno

---缩写金币方法一:
function FormatCoin_1(num)
    local str = ""
    local k = 1000
    local m = 1000000
    local b = 1000000000
    local t = 1000000000000

    if num >= t then
        str = string.format("%.1f", (num / t)) .. "T"
    elseif num >= b then
        str = string.format("%.1f", (num / b)) .. "B"
    elseif num >= m then
        str = string.format("%1.1f", (num / m)) .. "M"
    elseif (num >= k) then
        str = string.format("%.1f", (num / k)) .. "K"
    else
        str = num .. ""
    end
    return str
end

print(FormatCoin_1(233)) ---233
print(FormatCoin_1(1024)) ---1.0K
print(FormatCoin_1(1024102)) ---1.0M
print(FormatCoin_1(10241024)) ---10.2M
print(FormatCoin_1(10241024999)) ---10.2B
print(FormatCoin_1(999999999999999)) ---1000.0T

Método dos

---参考资料2:https://baike.so.com/doc/5417760-5655908.html
function FormatCoin_2(num)
    local numStr = tostring(num)
    -- numStr = "1000000000000000"

    if num < 10000 then
        return tostring(num)
    end

    local splitVal, t2 = math.modf((string.len(numStr) - 1) / 3)
    local suffix = ""
    if splitVal == 0 then
        suffix = ""
    elseif splitVal == 1 then
        ---*1000 千
        suffix = "K"
    elseif splitVal == 2 then
        ---*1000000 百万 10^6
        suffix = "M"
    elseif splitVal == 3 then
        ---*1000000000 十亿  10^9
        suffix = "B"
    elseif splitVal == 4 then
        ---*1000000000000 万亿 10^12
        suffix = "T"
    elseif splitVal == 5 then
        ---*1000000000000000 千万亿 10^15
        suffix = "Qa"
    elseif splitVal == 6 then
        ---*1000000000000000000 百兆 10^18
        suffix = "Qi"
    elseif splitVal == 7 then
        ---*1000000000000000000000 十万兆 10^21
        suffix = "S"
    end

    local splitVal2 = string.len(numStr) % 3
    local str = ""
    if splitVal2 == 1 then
        str = string.sub(numStr, 1, 1) .. "." .. string.sub(numStr, 2, 2) .. string.sub(numStr, 3, 3) .. suffix
    elseif splitVal2 == 2 then
        str = string.sub(numStr, 1, 1) .. string.sub(numStr, 2, 2) .. "." .. string.sub(numStr, 3, 3) .. suffix
    elseif splitVal2 == 0 then
        str = string.sub(numStr, 1, 1) .. string.sub(numStr, 2, 2) .. string.sub(numStr, 3, 3) .. suffix
    end

    return str
end

print(FormatCoin_2(233)) ---233
print(FormatCoin_2(1024)) ---1024
print(FormatCoin_2(1024102)) ---1.02M
print(FormatCoin_2(10241024)) ---10.2M
print(FormatCoin_2(10241024999)) ---10.2B
print(FormatCoin_2(999999999999999)) ---1e+K

metodo tres

---参考资料2:https://baike.so.com/doc/5417760-5655908.html
function FormatCoin_3(num)
    ---{"","K.千.10^3","M.百万.10^6","B.十亿.10^9","T.万亿.10^12","Qa.千万亿.10^15","Qi.百兆.10^18","S.十万兆.10^21"}
    local CompanyArray = {"", "K", "M", "B", "T", "Qa", "Qi", "S"}
    local Result = ""
    local nIndex = 1
    local nStep = 1000
    while num > 0 do
        local tNum = math.floor(num % nStep)
        Result = string.format("%d%s %s", tNum, CompanyArray[nIndex], Result)
        num = math.floor(num / nStep)
        nIndex = nIndex + 1
    end
    return Result
end

print(FormatCoin_3(233)) ---233 
print(FormatCoin_3(1024)) ---1K 24
print(FormatCoin_3(1024102)) ---1M 24K 102
print(FormatCoin_3(10241024)) ---10M 241K 24
print(FormatCoin_3(10241024999)) ---10B 241M 24K 999
print(FormatCoin_3(999999999999999)) ---999T 999B 999M 999K 999

Link de referencia:

Cómo abreviar el número de monedas de oro en el juego-Jianshu Método 1 Método 2 https://www.jianshu.com/p/202f9823404f

Supongo que te gusta

Origin blog.csdn.net/ZFSR05255134/article/details/128382533
Recomendado
Clasificación