我想使用 Javascript 对数字进行四舍五入。比如像这样,
15 => 20
345 => 400
201 => 300
180 => 200
93 => 100
22 => 30
如何使用 Javascript 实现这一点?我知道我可以使用 Math.ceil 或 Math.round 但这不是十进制数。
我想使用 Javascript 对数字进行四舍五入。比如像这样,
15 => 20
345 => 400
201 => 300
180 => 200
93 => 100
22 => 30
如何使用 Javascript 实现这一点?我知道我可以使用 Math.ceil 或 Math.round 但这不是十进制数。
要四舍五入到最接近的 100 倍数,您可以编写
100*Math.ceil(x/100)
其他因素也是如此。
选择一个“好”的因素可能是一个不同的问题。你可以取你的数字的以 10 为底的对数,乘以三并四舍五入。然后您可以应用以下地图:
3*round(log10(x)) factor
0 1
1 2
2 5
3 10
4 20
5 50
您不必存储该表:使用模运算,您可以计算因子的前导数字,并使用第三部分的下限,您可以获得尾随零的数量。
这是否合适取决于您的应用程序。您问题中的代码似乎只使用了 10 的幂的因子。在这种情况下,不要在上述方法中乘以 3,而只需直接使用以 10 为底的对数的底数:
factor = Math.pow(10, Math.floor(Math.log(x)/Math.log(10)));
rounded = Math.ceil(x/factor)*factor;
您的第一个示例的解决方案:
var n = 15;
n /= 10; //n = 1.5
n = Math.ceil(n); //n = 2
n *= 10; //n = 20
其他示例的工作方式相同。
您想要的答案取决于精度。
一个基本的解决方案是
function round(num, precision) {
var div = Math.pow(10, precision);
return Math.ceil(num/div)*div;
}
你如何将你的数字除以 10/100/1000 得到小数,然后是 ceil/round。然后再乘一次。
这是我想到的第一个解决方案。