JavaScript:四舍五入 100

标签 javascript math numbers rounding

我正在尝试将数字四舍五入到 100。

示例:

1340 should become 1400
1301 should become 1400

298 should become 300
200 should stay   200

我知道Math.round但它不会四舍五入到 100。

我怎样才能做到这一点?

最佳答案

原始答案

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

关于JavaScript:四舍五入 100,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17405899/

相关文章:

javascript - 动态 dom 操作后,如何在浏览器历史记录中保留 dom 状态?

php - 客户端从服务器检索聊天消息的最佳方式?

C 程序显示最多输入的 %2==0 个数字,直到您输入数字 %2!=0 && %7==0

java - 在 ImageJ 中实现 Sobel 过滤器

c - 两个大数相加只用C

algorithm - 检查数字是否为吸血鬼数字的最快方法?

javascript - 如何获取本地存储值

javascript - 如何在网格上为 HTML5 Canvas 创建随机行?

java - 如何在 JAVA 中使用 math.random 用另一个数组中的字符填充数组

python - 找到图像的中心来定义碰撞箱