我希望在随机十进制值后对值进行舍入
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中执行此操作?
答案 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);