Dalam js, pada masa lalu, kaedah Math.floor digunakan untuk membulatkan ke bawah Sekarang kita melihat penggunaan ini: OR operasi selang = 0 Mengapa kita boleh membulatkan ke bawah dengan cara ini. perbandingan lantai, apakah faedahnya?
Pertama sekali, S1ngS1ng di tingkat atas betul tentang perbezaan kecil itu.
Selain itu, bahagian perpuluhan |是位或运算,由于0在内存中存储的时候,是所有的整数位全部被填充了0,所以按二进制位和一个数值进行或运算,对应位上无论是0还是1和0进行或运算,都会得到它本身,但是由于数字0在内存中不存在小数部分,所以位或运算之后interval dibuang. Malah, pembundaran ke bawah dicapai dengan membuang bahagian perpuluhan.
Disebabkan ianya operasi sedikit, ia akan menjadi lebih pantas daripada Math.floor().
Perhatikan bahawa
|
bukan ATAU logik, tetapi ATAU bitwise (ATAU).Beberapa perbezaan kecil. Contohnya
Math.floor(NaN)
还是返回NaN
。但NaN | 0
返回 0。再比如
Math.floor(Infinity)
返回Infinity
,但Infinity | 0
mengembalikan 0Anda masih boleh melakukan ini
interval = interval >> 0
Pertama sekali, S1ngS1ng di tingkat atas betul tentang perbezaan kecil itu.
Selain itu, bahagian perpuluhan
|
是位或运算,由于0
在内存中存储的时候,是所有的整数位全部被填充了0,所以按二进制位和一个数值进行或运算,对应位上无论是0
还是1
和0
进行或运算,都会得到它本身,但是由于数字0在内存中不存在小数部分,所以位或运算之后interval
dibuang. Malah, pembundaran ke bawah dicapai dengan membuang bahagian perpuluhan.Disebabkan ianya operasi sedikit, ia akan menjadi lebih pantas daripada
Math.floor()
.Sebab sebenar ialah: penukaran jenis automatik dalam js.
Nilai dalamjs semuanya dibundarkan kepada
64位
浮点型表示的。当一个数值需要进行位运算
时,js会自动将它转换为32位有符号
dan bahagian perpuluhan dibuang.n|0; n>>0; //0 berikut hanya digunakan untuk memastikan bahawa nilai integer n kekal tidak berubah.
Mengurangkan daripada 64-bit kepada 32-bit akan menyebabkan kehilangan ketepatan.
小心!
, julat berkesan maksimum: 2^32/2-1Kedua-duanya boleh dicapai,
interval = interval | 0
这个是一个写作的技巧,看个人爱好吧。可能就是interval = interval | 0
这种写法运行会快一点,写代码这个也肯定比Math.floor
Tulis cepat!