我在SO answer中找到此代码,以便在Javascript中将数字截断为整数:
var num = -20.536;
var result = num | 0;
//result = -20
这是在Javascript中截断数字的有效方法,还是某种黑客攻击?为什么它仅适用于小于2147483647的数字?
答案 0 :(得分:4)
该方法通过隐式将数字转换为32位整数来工作,因为二进制运算符在计算中使用32位整数。
该方法的缺点是:
隐藏所需的操作是操作符的隐含效果,因此不容易看出代码的用途是什么。
它只能处理32位数字范围内的整数。
对于任何常规情况,您应该使用Math.floor
或Math.ceil
方法,它清楚地显示代码的意图,并处理双精度范围内的任何数字,即最多52位的整数:
var num = 20.536;
var result = Math.floor(num); // 20
var num = -20.536;
var result = Math.ceil(num); // -20
Javascript中没有向往零的方法,所以要做到这一点,你需要在舍入前检查符号:
var result = num < 0 ? Math.ceil(num) : Math.floor(num);
答案 1 :(得分:2)
像这样使用Javascript的parseInt
:
var num = -20.536;
var num2int = parseInt(num);
return num2int; //returns -20
多田! num现在是一个值为-20的int。
答案 2 :(得分:2)
如果你使用parseInt
,你可以从-2 ^ 53到+ 2 ^ 53:
parseInt(-20.536) // -20
parseInt(9007199254740992.1234) // 9007199254740992
为什么+/- 2 ^ 53?这是因为JavaScript使用64位表示形式的浮点数,具有52位尾数。因此,可以精确地表示高达2 ^ 53的所有整数值。除此之外,整数都是近似的。