3 回答
TA贡献1963条经验 获得超6个赞
function(x) { if(x < 0) return Math.ceil(x); else return Math.floor(x);}
+x
Number(x)
这是不可能的
-43.210 = 111111111111111111111111110101012
非-43 10 = 000000000000000000000000001010102 = 4210
不是42 10 = 111111111111111111111111110101012 = -4310
Math.floor(-43.2)
TA贡献1827条经验 获得超9个赞
第一个~运算符强制操作数为整数(可能在将值强制为字符串或布尔值之后),然后将最低的31位反转。据官方说法,ECMAScript数字都是浮点数,但有些数字在SpiderMonkey引擎中被实现为31位整数。
您可以使用它将一个1元素数组转换为整数。浮点数是按照C规则转换的,即.小数部分的截断。
然后,第二个~运算符将位反转回来,因此您知道您将有一个整数。这与在条件语句中强制将值强制为布尔值不同,因为空对象{}的计算结果为true,而~{}的计算结果为false。
js>~~"yes"
0
js>~~3
3
js>~~"yes"
0
js>~~false
0
js>~~""
0
js>~~true
1
js>~~"3"
3
js>~~{}
0
js>~~{a:2}
0
js>~~[2]
2
js>~~[2,3]
0
js>~~{toString: function() {return 4}}
4
js>~~NaN
0
js>~~[4.5]
4
js>~~5.6
5
js>~~-5.6
-5
TA贡献1831条经验 获得超10个赞
~~
通过删除任何小数返回数字的整数部分。它不舍得任何数字。
Math.trunc(13.37) // 13Math.trunc(42.84) // 42Math.trunc(0.123) // 0Math.trunc(-0.123) // -0Math.trunc("-1.123")// -1Math.trunc(NaN) // NaNMath.trunc("foo") // NaNMath.trunc() // NaN
function trunc(x) { return x < 0 ? Math.ceil(x) : Math.floor(x);}
添加回答
举报