2

数値を最初の 2 桁に丸めようとしています。

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/

注: 割り算して小数にすることができることはわかっていますが、手動でornを挿入しなくても、この関数をすべての数値に対して機能させたいと考えています。/1000/1000000

4

4 に答える 4

6

どうぞ:

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);
于 2013-10-11T03:17:57.357 に答える
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
于 2013-10-11T03:28:02.993 に答える
1

これは 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);
}
于 2013-10-11T03:38:30.687 に答える