Javascript并将正数和负数四舍五入到最接近的1000

时间:2013-09-17 08:13:27

标签: javascript rounding

我有这个组件,它将不必要的值四舍五入到最接近的1000作为输入,如下所示(参见min,max):

...
        scale: {
            majorUnit: 500,
            minorUnit: 100,
            min: nearest(minTensionRange, 1000),
            max: nearest(maxTensionRange, 1000),
            labels: {
                template: function (e) {
                    return getTensionLabel(e, nearest(maxTensionRange, 1000), nearest(minTensionRange, 1000));
                }
            },
...
    });

最近的函数执行以下操作:

function nearest(n, v) {
    n = n / v;
    n = Math.round(n) * v;
    console.log(n);
    return n;
}

效果很好,直到我得到一个小于0.5的值或一个负数,在这种情况下它返回0.我想要完成的是用一个正数舍入我的组件的最大值四舍五入到最近1000和带负数的最小值四舍五入到最接近的1000。

I.e:

...
        scale: {
            majorUnit: 500,
            minorUnit: 100,
            min: 5000,
            max: -5000,
            labels: {
                template: function (e) {
                    return getTensionLabel(e, nearest(maxTensionRange, 1000), nearest(minTensionRange, 1000));
                }
            },
...
    });

1 个答案:

答案 0 :(得分:5)

如果我做对了,你想在每种情况下得到最接近的1000,所以你总是喜欢在正面情况下将数字向上舍入而在负面情况下向下舍入。 请尝试以下方法:

function nearest(n, v) {
  n = n / v;
  n = (n < 0 ? Math.floor(n) : Math.ceil(n)) * v;
  return n;
}