簡體   English   中英

JavaScript的輪數到前兩位數?

[英]JavaScript round number to first two digits?

我正在嘗試將數字四舍五入到前兩位數字。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM