0

100 の数字を四捨五入しようとしています。

例:

1340 should become 1400
1301 should become 1400

298 should become 300
200 should stay   200

私は知ってMath.roundいますが、100に丸めません。

どうやってやるの ?

4

2 に答える 2

22

元の回答

Math.ceil次のような関数を使用します。

var result = 100 * Math.ceil(value / 100);

一般化されたバージョン

この関数は次のように一般化できます。

Number.prototype.roundToNearest = function (multiple, roundingFunction) {
    // Use normal rounding by default
    roundingFunction = roundingFunction || Math.round;

    return roundingFunction(this / multiple) * multiple;
}

次に、この関数を次のように使用できます。

var value1 = 8.5;
var value2 = 0.1;

console.log(value1.roundToNearest(5));              // Returns 10
console.log(value1.roundToNearest(5, Math.floor));  // Returns 5
console.log(value2.roundToNearest(2, Math.ceil));   // Returns 2

または、カスタムの丸め関数 (銀行家の丸めなど) を使用します。

var value1 = 2.5;
var value2 = 7.5;

var bankersRounding = function (value) {
    var intVal   = Math.floor(value);
    var floatVal = value % 1;

    if (floatVal !== 0.5) {
        return Math.round(value);
    } else {
        if (intVal % 2 == 0) {
            return intVal;
        } else {
            return intVal + 1;
        }
    }
}

console.log(value1.roundToNearest(5, bankersRounding)); // Returns 0
console.log(value2.roundToNearest(5, bankersRounding)); // Returns 10

実行中のコードの例は、こちらから入手できます

于 2013-07-01T13:43:08.200 に答える
4

これを試して...

function roundUp(value) {
    return (~~((value + 99) / 100) * 100);
}

これは次の 100 に切り上げられます - 101 は 200 を返します。

jsFiddle の例 - http://jsfiddle.net/johncmolyneux/r8ryd/

コンソールを開いて結果を確認します。

于 2013-07-01T13:43:24.607 に答える