随机十进制值后的Javascript舍入值

时间:2017-01-30 16:00:21

标签: javascript performance math rounding

我希望在随机十进制值后对值进行舍入

Example(round up when value > x.90):
18.25478 => 18
18.7545 => 18
18.90 => 19
18.95 = > 19 

我知道Math.ceil和Math.Floor方法,但我想结合一种方法。而且我也读到Math.floor和ceil很慢的值(我将在列表中转换3000.000+值!)

我如何在JavaScript中执行此操作?

4 个答案:

答案 0 :(得分:7)

您可以添加0.1并使用Math.floor



function round(v) {
    return Math.floor(v + 0.1);
}

var array = [
        18.25478, // => 18
        18.7545,  // => 18
        18.90,    // => 19
        18.95,    // => 19 
    ];
  
console.log(array.map(round));




答案 1 :(得分:0)

你可以使用这个功能:

function customRound(x) {
  if (x - Math.floor(x) >= 0.9) {
    return Math.ceil(x);
  } else {
    return Math.floor(x);
  }
}

答案 2 :(得分:0)

如果您正在寻找以自定义阈值作为输入的更一般的答案,此功能将更好地满足您的需求。如果您担心Math.round()Math.ceil(),它也会使用Math.floor()。它还处理负数。你可以在这里弄清楚它:https://jsfiddle.net/f0vt7ofw/

function customRound(num, threshold) {
  if (num >= 0) {
      return Math.round(num - (threshold - 0.5));
  }
  else {
      return Math.round(num + (threshold - 0.5));
  }
}

示例:

customRound(18.7545, 0.9) => 18
customRound(18.9, 0.9) => 19

答案 3 :(得分:0)

以下是灵活的功能,允许更改阈值

function roundWithThreshold(threshold, num) {
  return Math[ num % 1 > threshold ? 'ceil' : 'floor' ](num);
}

用法:

roundWithThreshold(0.2, 4.4);