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

Nic*_*ger 2 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));
                }
            },
...
    });
Run Code Online (Sandbox Code Playgroud)

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

function nearest(n, v) {
    n = n / v;
    n = Math.round(n) * v;
    console.log(n);
    return n;
}
Run Code Online (Sandbox Code Playgroud)

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

即:

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

use*_*983 5

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

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