Javascript:回合100

时间:2013-07-01 13:40:30

标签: javascript math numbers rounding

我正试图将数字变为100。

示例:

1340 should become 1400
1301 should become 1400

298 should become 300
200 should stay   200

我知道Math.round,但它没有圆到100。

我该怎么做?

2 个答案:

答案 0 :(得分:18)

原始答案

使用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

或使用自定义舍入功能(例如banker's rounding):

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

正在运行的代码示例为available here

答案 1 :(得分:4)

试试这个......

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

这将累计到下一百 - 101将返回200。

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

打开控制台以查看结果。