Say I have a float x that has a whole part a and decimal part b i.e. x = a.b. How can I format x in JavaScript such that it'll have at most n digits, as shown below:
const n = 5
format(123.0) == '123'
format(123.01) == '123.01'
format(123.012) == '123.01'
format(0.0123) == '0.0123'
format(0.01234) == '0.0123'
Based on a recently deleted answer that had the logic but didn't really work, I came up with this solution:
const format = (number, digits = 5) => {
const str = number + ''; // convert to string
let [integer, decimal] = str.split('.'); // split by dot delimiter
const integerDigits = integer.length;
if (integerDigits >= digits) {
return integer;
} else {
let decimalDigits = digits - integerDigits;
decimal = Number('0.' + decimal.substring(0, decimalDigits)).toString();
return integer + '.' + decimal.split('.')[1];
}
}