6

37なら40、1086なら2000、453992なら500000に丸めたいです。

申し訳ありませんが、これをより一般的に説明する方法がよくわかりませんが、基本的には、最も高い桁の数値は常に最も近い桁に切り上げ、残りはゼロになります。通常のものを丸める方法は知っていますが、桁数の変動をきれいに処理する方法がわかりません。

ありがとう、

編集: 4 から 10 のラウンドを削除しました。これは、残りのラウンドに適合しないように思われ、実際には必要ではなかったからです。

4

6 に答える 6

3

次の関数を使用します

function specialRoundUp(num) {
    var factor = Math.pow(10, Math.floor(Math.log(num) / Math.LN10));
    return factor * Math.ceil(num/factor);
}
于 2013-04-09T15:48:01.263 に答える
0

みたいに読んだnearest integer, which is production of an integer and some power of 10

あなたはそれを得ることができます

var myCeil = function(num){
  var power = Math.log(num,10) * Math.LOG10E;
  var head = Math.floor(power);
  var rest = power - orig;
  return Math.ceil(Math.pow(10,next))*Math.pow(10,orig);
}
i = [37, 1086, 453992];
console.log( i.map(myCeil) );
// -> [ 40, 2000, 500000 ]

これは、整数以外の入力でも機能するはずです。

于 2013-04-09T15:50:11.080 に答える
0

10 の最も近い累乗に丸めたい場合は、これを試してください (javascript)

function Round2NearestPowerOf10(x) {
    x = Math.round(x);
    var strLen = x.toString().length;
    var y = x / Math.pow(10, strLen);
    var rst = Math.pow(10, strLen - 1 + Math.round(y));
    return rst < 10 ? 10 : rst;
}

結果は 10、100、1000 などに丸められます。

于 2014-06-03T07:30:37.673 に答える