3

私は JavaScript の Math.round/ceil/floor 関数を理解していますが、この問題に対する有効な関数を思い付くことができませんでした。

私がやりたいのは、任意の整数を 3 の倍数、または実際に選択した任意の倍数に丸めることです。

'3' の倍数値が指定された場合に返される数値の要件は次のとおりです。

0 returns 0
6 returns 6
7 returns 6
8 returns 9
22 returns 21
23 returns 24

etc..etc...基本的に、返される値は常に指定されたパラメータの倍数になります。この場合は「3」です。

皆さんありがとう。

4

4 に答える 4

7

次のような単純な関数を使用できます。

function roundMultiple3(num) {
  return(Math.round(num / 3) * 3);
}

これは 3 で除算し、最も近い整数に丸め、さらに 3 を掛けて完全な値を復元します。

または、倍数を指定できる汎用バージョン:

function roundMultiple(num, multiple) {
  return(Math.round(num / multiple) * multiple);
}
于 2012-05-23T22:51:04.407 に答える
3

これはうまくいくはずです:

function roundToNearest(number, multiple) {
    return Math.round(number * multiple) / multiple;
}

数値より小さい最も近い倍数に丸めるには、 に置き換えMath.round()ますMath.floor()。同様にMath.ceil()、最も近い倍数に切り上げます。

于 2012-05-23T22:51:17.200 に答える
3

これは私のために働いた:

function roundTo(n, x) {
    return Math.round(x/n) * n;
}

roundTo(3, 2); // 3
rountTo(4, 7); // 8
于 2012-05-23T22:54:55.537 に答える
0
Number.prototype.roundup=function(factor){
  var n=Math.ceil(this);
  while(n%factor)++n;
  return n;
}
于 2012-05-23T22:53:31.057 に答える