Last active
July 8, 2018 22:28
-
-
Save samryl/f2e54f575447bbb073e5a15a0787ae03 to your computer and use it in GitHub Desktop.
Add Commas to Number (Python)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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