I’m trying to round a number up to the first two digits.
14300 -> 15000 1430 -> 1500 143 -> 150 14 -> 14
I have figured out this much:
var n = 14300; n = parseFloat(Math.ceil(n).toPrecision(2)); console.log(n);
It returns 14000, but I want to round it up. Math.ceil only works to the next integer. http://jsfiddle.net/cruTY/
Note: I know I can divide n to make it a decimal, but I want this function to work for all numbers without having to manually insert /1000 or /1000000.
Advertisement
Answer
Here you go:
var n = 14300;
if (String(n).length > 2) {
var d = Math.pow(10, String(n).length-2);
n = Math.ceil(n/d)*d;
}
console.log(n);
What’s your requirement if String(n).length < 2?
Alternately,
var n = 143;
var l = String(n).length;
if (l > 2) {
var p = Number(String(n).slice(0,3)) / 10;
n = Math.ceil(p) + '';
while(n.length < l) {
n += '0';
}
n = Number(n);
}
console.log(n);