Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

How would you add commas to integers?

Asked by 5 years ago

I'm trying to add commas to integers, for example:

x = 5000
print(x) --> 5000

I want commas in between each three digits. So I want it to be:

--> 5,000

2 answers

Log in to vote
1
Answered by
174gb 290 Moderation Voter
5 years ago
x = 5000

function commas(str)
   return #str % 3 == 0 and str:reverse():gsub("(%d%d%d)", "%1,"):reverse():sub(2) or  str:reverse():gsub("(%d%d%d)", "%1,"):reverse()
end

-- you need convert the value to string (using tostring())

print(commas(tostring(x)))
0
i have an odd feeling this was taken from another answer Fifkee 2017 — 5y
0
Yes, from "Destrings" answer 174gb 290 — 5y
Ad
Log in to vote
0
Answered by
BuDeep 214 Moderation Voter
5 years ago

I know I'm a little bit late, but I figured I'd show my take at converting a number to comma format. This works with negative numbers as well.

function ConvertNumber(num)
    local newNum = nil--This variable is the final product, and will be what prints to the output
    local numRev = string.reverse(num)--The first of the reversed numbers
    local numRev2 = string.reverse(num)--The second of the reversed numbers

    local stringLen = string.len(num)
    local amntOfTimes = stringLen / 3 --This divides the string length by 3, which is also how many spaces are in between commas. 
    local tempAmntOfTimes = tostring(amntOfTimes)--This plays into the function below

    if string.len(tempAmntOfTimes) == 1 then--This function checks to see if the integer value of amntOfTimes is a decimal or whole number. If it is a whole number it subtracts one from the value. This is so there isnt a comma at the beginning of the number
        amntOfTimes = amntOfTimes - 1
    end

    local x = 3--This value is how many spaces the next comma needs to be
    local n = 0--This value offsets the comma to be in the correct spot

    for i = 1, amntOfTimes do
        numRev = string.sub(numRev, 1, x+n)..','..string.sub(numRev2, x+1, stringLen)--Everything comes together here

        n = n + 1
        x = x + 3
    end


    local newNum = string.reverse(numRev)--ReReverses the number to make it look normal
    print(newNum)
end

ConvertNumber(5000)--Put the number you want to convert here

Answer this question