2

我有这个组件,它不需要四舍五入到最接近的 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。

IE:

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

1 回答 1

5

如果我猜对了,您希望在每种情况下都得到最接近的 1000,因此您总是希望在正数情况下向上舍入,在负数情况下向下舍入。尝试以下操作:

function nearest(n, v) {
  n = n / v;
  n = (n < 0 ? Math.floor(n) : Math.ceil(n)) * v;
  return n;
}
于 2013-09-17T08:28:32.757 回答