数学上的非十进制数.天花板或数学.round在JavaScript中
Non Decimal Numbers on Math.ceil or Math.round in JavaScript?
我想使用Javascript四舍五入一个数字。例如,
15 => 20
345 => 400
201 => 300
180 => 200
93 => 100
22 => 30
如何使用Javascript实现这一点?我知道我能用数学。天花板或数学。四舍五入,但不是小数
第一个例子的解决方案:
var n = 15;
n /= 10; //n = 1.5
n = Math.ceil(n); //n = 2
n *= 10; //n = 20
其他示例的工作方式相同
要舍入到最接近100的倍数,可以写
100*Math.ceil(x/100)
其他因素也一样。
选择一个"好的"因素可能是另一个问题。你可以取以10为底的对数,乘以3,然后四舍五入。然后可以应用下面的映射:
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;
你想要的答案取决于精度。
一个基本的解决方案是
function round(num, precision) {
var div = Math.pow(10, precision);
return Math.ceil(num/div)*div;
}
如果你把你的数字除以10/100/1000得到小数,然后除以整数/四舍五入。然后再相乘。
这是我想到的第一个解决方案。
相关文章:
- Javascript:Round Half偶数后2位
- 为什么Java和Javascript Math.round(-1.5)到-1
- Math.round MidPointRounding.AwayFromZero in javascript
- After Effects math.round Javascript script
- Javascript round up values
- Javascript round()、toFixed() 和 toPrecision() 是不正确的
- Javascript 避免 0.2 + 0.4 = 0.60000000000000001 而不是 Math.round
- Javascript math.round threshold
- Javascript: Round by 100
- JavaScript数学.round:不将对象四舍五入到十进制的1
- 为什么是数学?Round在javascript中比自定义构建函数慢
- javascript round problems
- c#和Javascript中Math.round()的值不同
- 数学上的非十进制数.天花板或数学.round在JavaScript中
- 数学.round在JavaScript中不起作用
- 使用javascript Round方法将值从1.035舍入为1.04
- javascript中的Round函数
- 如何使用math.round()纠正不准确的Javascript数学
- Javascript: Round Time UP最接近5分钟
- Multiply & Round JavaScript issue