Skip to content

Instantly share code, notes, and snippets.

@thmain
Created December 25, 2022 05:30
Show Gist options
  • Save thmain/c5bc3074a99c56d319540a85c2010fea to your computer and use it in GitHub Desktop.
Save thmain/c5bc3074a99c56d319540a85c2010fea to your computer and use it in GitHub Desktop.
function formatNumber (num) {
if (typeof num !== 'number') {
console.error('Incorrect value was passed. Please enter a valid number')
return
}
let isNegativeNum
let isFloatingNum
let absoluteNum
let decimalNum
let formatedString = ''
let count = 1
// Negative Numbers
if (num < 0) {
absoluteNum = Math.abs(num)
isNegativeNum = true
}
absoluteNum = absoluteNum || num
// Floating point numbers
if (!Number.isInteger(absoluteNum)) {
decimalNum = absoluteNum - Math.floor(absoluteNum)
decimalNum = decimalNum.toString().slice(1)
absoluteNum = Math.floor(absoluteNum)
isFloatingNum = true
}
// Add the commas to the number
let iteratableAbsoluteNum = absoluteNum.toString()
let len = iteratableAbsoluteNum.length
for (let i = len - 1; i >= 0; i--) {
formatedString = iteratableAbsoluteNum.charAt(i) + formatedString
if (count % 3 === 0 && i != 0) {
count = 0
formatedString = ',' + formatedString
}
count++
}
if (isNegativeNum) {
formatedString = '-' + formatedString
}
if (isFloatingNum) {
formatedString = formatedString + decimalNum.toString()
}
console.log(formatedString)
}
formatNumber(100000) // "100,000"
formatNumber(-1000) // "-1,000"
formatNumber(-10.10) // "-10.09999999999999964"
formatNumber(10.10) // "10.09999999999999964"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment