cari

Rumah  >  Soal Jawab  >  teks badan

javascript - membulatkan ke bawah dalam js

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?

PHP中文网PHP中文网2765 hari yang lalu1030

membalas semua(5)saya akan balas

  • 某草草

    某草草2017-06-26 10:57:11

    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 0

    balas
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-06-26 10:57:11

    Anda masih boleh melakukan ini interval = interval >> 0

    balas
    0
  • 给我你的怀抱

    给我你的怀抱2017-06-26 10:57:11

    • Pertama sekali, S1ngS1ng di tingkat atas betul tentang perbezaan kecil itu.

    • Selain itu, bahagian perpuluhan |是位或运算,由于0在内存中存储的时候,是所有的整数位全部被填充了0,所以按二进制位和一个数值进行或运算,对应位上无论是0还是10进行或运算,都会得到它本身,但是由于数字0在内存中不存在小数部分,所以位或运算之后interval dibuang. Malah, pembundaran ke bawah dicapai dengan membuang bahagian perpuluhan.

    • Disebabkan ianya operasi sedikit, ia akan menjadi lebih pantas daripada Math.floor().

    balas
    0
  • 三叔

    三叔2017-06-26 10:57:11

    Sebab sebenar ialah: penukaran jenis automatik dalam js.

    Nilai dalam

    js 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-1

    > f64=(Math.pow( 2,32)/2-1)-0.5
    2147483646.5
    > f64|0
    2147483646
    > f64>>0
    2147483646
    > (f64 + 2)|0 //超出有效范围
    -2147483648
    > (f64 + 2)>>0 //超出有效范围
    -2147483648
    > Math.floor(f64 + 2) //正确
    2147483648

    balas
    0
  • 给我你的怀抱

    给我你的怀抱2017-06-26 10:57:11

    Kedua-duanya boleh dicapai, interval = interval | 0 这个是一个写作的技巧,看个人爱好吧。可能就是interval = interval | 0这种写法运行会快一点,写代码这个也肯定比Math.floorTulis cepat!

    balas
    0
  • Batalbalas