Gui*_*rez 2 javascript integer numbers truncation
我在SO 答案中找到了这段代码,作为在 Javascript 中将数字截断为整数的方法:
var num = -20.536;
var result = num | 0;
//result = -20
Run Code Online (Sandbox Code Playgroud)
这是在 Javascript 中截断数字的有效方法,还是某种 hack?为什么它只适用于小于 2147483647 的数字?
该方法的工作原理是将数字隐式转换为 32 位整数,因为二元运算符在计算中使用 32 位整数。
该方法的缺点是:
所需的操作被隐藏为运算符的隐式效果,因此不容易看出代码的意图。
它只能处理32位数字范围内的整数。
对于任何常规情况,您应该使用Math.floor
orMath.ceil
方法,它清楚地显示了代码的意图,并且它处理双精度范围内的任何数字,即最多 52 位的整数:
var num = 20.536;
var result = Math.floor(num); // 20
var num = -20.536;
var result = Math.ceil(num); // -20
Run Code Online (Sandbox Code Playgroud)
Javascript 中没有向零舍入的方法,因此要做到这一点,您需要在舍入之前检查符号:
var result = num < 0 ? Math.ceil(num) : Math.floor(num);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
293 次 |
最近记录: |