我正在尝试将数字四舍五入到前两位数。
14300 -> 15000
1430 -> 1500
143 -> 150
14 -> 14
我已经弄清楚了这一点:
var n = 14300;
n = parseFloat(Math.ceil(n).toPrecision(2));
console.log(n);
它返回14000,但我想把它整理一下。 Math.ceil仅适用于下一个整数。 http://jsfiddle.net/cruTY/
注意:我知道我可以将n
除以使其成为小数,但我希望此功能适用于所有数字,而无需手动插入/1000
或/1000000
。
答案 0 :(得分:5)
你走了:
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);
如果String(n).length < 2
?
可替换地,
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);
答案 1 :(得分:1)
我只能想到这个
var n = 14300;
var N = n + "";
console.log(N.length > 2 ? (parseInt(N.substr(0, 2)) + 1) * (Math.pow(10, N.length - 2)) : n);
<强>输出强>
15000
答案 2 :(得分:1)
这个不需要特别处理n&lt; 10:
function roundUpToPrecision(n, d) {
var round = n.toPrecision(d);
if(round === n.toString()) {
return n;
}
return +(n + 0.5 * Math.pow(10, Math.floor(Math.log(n) * Math.LOG10E) - 1)).toPrecision(d);
}
答案 3 :(得分:0)
我的答案比其他答案更普遍,因为你可以轻松改变价值观。此功能会ceil
您需要的任何索引。如果是第三或第二,只需将dig
更改为相应的数字:
function ceil(num, ind){
let str = Math.floor(num)+"",
arr = new Array(str.length).fill("0");
arr[ind - 1] = "1";
let divider = arr.join("");
return Math.ceil(num/divider) * divider;
}
let number = 14300, //which number to be ceiled
dig = 2; //to which index we ceil
document.body.textContent = ceil( number, dig );
&#13;