JavaScript 整数到前两位数字

JavaScript round number to first two digits?

本文关键字:两位 数字 整数 JavaScript      更新时间:2023-09-26

我正在尝试将一个数字四舍五入到前两位数字。

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

你来了:

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);

我只能想到这个

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
这个

不需要特殊处理 n <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);
}

我的答案比其他答案更普遍,因为您可以轻松更改周围的值。此函数将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 );

此解决方案适用于数字。

function roundValue(value) {
    const valueAbs = Math.abs(value);
    const exponent = Math.round(Math.log10(valueAbs)) - 1;
    const power = Math.pow(10, exponent);
    return Math.ceil(valueAbs / power) * power;
}