【问题标题】:Round the number with JavaScript [duplicate]用JavaScript对数字进行四舍五入[重复]
【发布时间】:2018-06-01 13:50:06
【问题描述】:

我想像这样对数字进行四舍五入:

Value   Expected
0,523%  1%
2,235%  2,5%
-0,081% -0,5%
-1,081% -1,5%

如何使用 JavaScript 做到这一点?

解决方案:

  static round (num) {
    const abs = Math.abs(num);
    const sign = num < 0 ? -1 : 1;
    return sign * (abs % 1 > 0.5 ? Math.ceil(abs) : Math.floor(abs) + 0.5) }
}

我使用 Excel =round(Value/Granularity)*Granularity 但我在 JavaScript 中尝试过它不起作用。

 static calc(num){
    const granularitiy = 0.00005;
    let calc = Math.round((num / granularitiy)) * granularitiy;
    return calc;
  }

我的粒度值是0.00005;

【问题讨论】:

  • 在这里展示你的作品
  • 您想将正数 up 舍入到最接近的 0.5,而将负数 down 舍入到最接近的 0.5...?
  • 你的意思是,四舍五入到离零最近的 0.5 倍数?
  • 这似乎是一种糟糕的舍入方式。你最终会在0.001-0.001 之间产生巨大的差距。一个将一直向上舍入到0.5,另一个向下舍入到-0.5。这是一个巨大的差距。
  • 这个答案使用 .5 而不是 3:stackoverflow.com/questions/3254047/…

标签: javascript typescript


【解决方案1】:

由于只想四舍五入到 0.5 或四舍五入,因此不能简单地使用 Math.round(number)

执行此操作的最简单方法是:

Math.round(number*2)/2

这样,您将始终得到 0.5 或圆形的数字。
如果您想以另一种方式(天花板或地板)四舍五入,您可以简单地将 Math.round 替换为您想要的任何内容。

【讨论】:

  • 这不会产生所有想要的结果
  • 我想让它更精确,但我们需要来自操作的更多信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-17
  • 2011-05-31
  • 1970-01-01
相关资源
最近更新 更多