Skip to content

Instantly share code, notes, and snippets.

@samryl
Last active July 8, 2018 22:28
Show Gist options
  • Save samryl/f2e54f575447bbb073e5a15a0787ae03 to your computer and use it in GitHub Desktop.
Save samryl/f2e54f575447bbb073e5a15a0787ae03 to your computer and use it in GitHub Desktop.
Add Commas to Number (Python)
def add_commas(number):
"""Add commas to a number every 3 places and return the result as a string.
Handles positives/negatives, cases where 0 < abs(x) < 1, and numbers
passed as a string."""
# Ensure that the argument is a string
number = str(number)
isnegative = number[0] == "-"
# Remove negative signs (effectivly get absolute value) and split at any decimal point
basenumber = number.replace("-","").split(".")
newnumber = ""
# If the case is 0 < abs(x) < 1
if basenumber[0] == "0":
newnumber = basenumber[0] + "." + basenumber[1]
# Remove trailing 0s from the result
while newnumber[-1:] == "0":
newnumber = newnumber[:-1]
elif basenumber[0] == "":
newnumber = "0." + basenumber[1]
# Remove trailing 0s from the result
while newnumber[-1:] == "0":
newnumber = newnumber[:-1]
else:
# For each digit going backwards, add it to the beginning of newnumber. If the modulo of i is 3 (every 3 digits), also add a comma
i = 1
while i <= len(basenumber[0]):
newnumber = basenumber[0][-i] + newnumber
if i % 3 == 0 and i != len(basenumber[0]):
newnumber = "," + newnumber
i += 1
# Re-add decimal places
if len(basenumber) > 1:
newnumber += "." + basenumber[1]
# Remove trailing 0s from the result
while newnumber[-1:] == "0":
newnumber = newnumber[:-1]
# Remove leading 0s from the result unless it's before a decimal point
while newnumber[0] == "0":
if not newnumber[1] == ".":
newnumber = newnumber[1:]
else:
break;
# Remove leading commas from the result
if newnumber[0] == ",":
newnumber = newnumber[1:]
# Re-add negative sign
if isnegative:
newnumber = "-" + newnumber
return newnumber
if __name__ == "__main__":
import sys
if len(sys.argv) == 1:
num = add_commas("-068204.1250")
else:
num = add_commas(sys.argv[1])
print(num)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment