【问题标题】:Javascript and rounding both positive and negative numbers to nearest 1000Javascript并将正数和负数四舍五入到最接近的1000
【发布时间】:2013-09-17 08:13:26
【问题描述】:

我有这个组件,它采用不需要四舍五入到最接近的 1000 的值作为输入,如下所示(见最小值,最大值):

...
        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。

即:

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

【问题讨论】:

    标签: javascript rounding


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-01
      • 2019-02-28
      • 1970-01-01
      • 1970-01-01
      • 2011-03-21
      • 1970-01-01
      • 2017-10-05
      相关资源
      最近更新 更多