javascript - arrondir vers le bas en js
PHP中文网
PHP中文网 2017-06-26 10:55:11
0
5
997

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中文网

认证高级PHP讲师

répondre à tous(5)
某草草

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

过去多啦不再A梦

Vous pouvez toujours le faire interval = interval >> 0

给我你的怀抱
  • 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().

三叔

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
给我你的怀抱

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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal