Maison  >  Questions et réponses  >  le corps du texte

javascript - arrondir vers le bas en js

Dans js, dans le passé, la méthode Math.floor était utilisée pour arrondir à l'inférieur. Nous voyons maintenant cette utilisation : OR operation
interval = interval | 0
Pourquoi pouvons-nous arrondir à l'inférieur de cette manière ? comparaison d'étage, quels avantages ?

PHP中文网PHP中文网2693 Il y a quelques jours986

répondre à tous(5)je répondrai

  • 某草草

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

    Notez que | n'est pas un OU logique, mais un OU au niveau du bit (OR).

    Quelques petites différences. Par exemple Math.floor(NaN) 还是返回 NaN。但 NaN | 0 返回 0。
    再比如 Math.floor(Infinity) 返回 Infinity,但 Infinity | 0 renvoie 0

    répondre
    0
  • 过去多啦不再A梦

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

    Vous pouvez toujours le faire interval = interval >> 0

    répondre
    0
  • 给我你的怀抱

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

    • Tout d’abord, S1ngS1ng à l’étage a raison sur ces petites différences.

    • De plus, la partie décimale de |是位或运算,由于0在内存中存储的时候,是所有的整数位全部被填充了0,所以按二进制位和一个数值进行或运算,对应位上无论是0还是10进行或运算,都会得到它本身,但是由于数字0在内存中不存在小数部分,所以位或运算之后interval est supprimée. En fait, l’arrondi est obtenu en supprimant la partie décimale.

    • Parce que c'est une petite opération, ce sera plus rapide que Math.floor().

    répondre
    0
  • 三叔

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

    La vraie raison est la suivante : conversion automatique de type dans js.

    Les valeurs dans

    js sont toutes arrondies à 64位浮点型表示的。当一个数值需要进行位运算时,js会自动将它转换为32位有符号 et la partie décimale est supprimée.

    n|0; n>>0; //Le 0 suivant est uniquement utilisé pour garantir que la valeur entière de n reste inchangée.

    Réduire de 64 bits à 32 bits entraînera une perte de précision. 小心!, portée efficace maximale : 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

    répondre
    0
  • 给我你的怀抱

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

    Les deux peuvent être réalisés, interval = interval | 0 这个是一个写作的技巧,看个人爱好吧。可能就是interval = interval | 0这种写法运行会快一点,写代码这个也肯定比Math.floorÉcrivez vite !

    répondre
    0
  • Annulerrépondre