3 回答

TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超3個(gè)贊
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貢獻(xiàn)1863條經(jīng)驗(yàn) 獲得超2個(gè)贊
第一個(gè)~運(yùn)算符強(qiáng)制操作數(shù)為整數(shù)(可能在將值強(qiáng)制為字符串或布爾值之后),然后將最低的31位反轉(zhuǎn)。據(jù)官方說法,ECMAScript數(shù)字都是浮點(diǎn)數(shù),但有些數(shù)字在SpiderMonkey引擎中被實(shí)現(xiàn)為31位整數(shù)。
您可以使用它將一個(gè)1元素?cái)?shù)組轉(zhuǎn)換為整數(shù)。浮點(diǎn)數(shù)是按照C規(guī)則轉(zhuǎn)換的,即.小數(shù)部分的截?cái)唷?/p>
然后,第二個(gè)~運(yùn)算符將位反轉(zhuǎn)回來,因此您知道您將有一個(gè)整數(shù)。這與在條件語句中強(qiáng)制將值強(qiáng)制為布爾值不同,因?yàn)榭諏ο髙}的計(jì)算結(jié)果為true,而~{}的計(jì)算結(jié)果為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貢獻(xiàn)1942條經(jīng)驗(yàn) 獲得超3個(gè)贊
~~
通過刪除任何小數(shù)返回?cái)?shù)字的整數(shù)部分。它不舍得任何數(shù)字。
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);}
添加回答
舉報(bào)