JavaScript - jsでの切り捨て
PHP中文网
PHP中文网 2017-06-26 10:55:11
0
5
991

js では、以前は切り捨てに Math.floor メソッドが使用されていましたが、現在は次のような使用法が見られます: OR 演算
間隔 = 間隔 | 0
なぜこのように切り捨てられるのでしょうか? 、Math.floor と比較して、この使用法の利点は何ですか?

PHP中文网
PHP中文网

认证高级PHP讲师

全員に返信(5)
某草草

| は論理 OR ではなく、ビット単位の OR (OR) であることに注意してください。

いくつかの小さな違い。たとえば、Math.floor(NaN) 还是返回 NaN。但 NaN | 0 返回 0。
再比如 Math.floor(Infinity) 返回 Infinity,但 Infinity | 0は0を返します

いいねを押す +0
过去多啦不再A梦

これはまだできますinterval = interval >> 0

いいねを押す +0
给我你的怀抱
  • まず第一に、これらの小さな違いについては、2 階の S1ngS1ng が正しいです。

  • また、|是位或运算,由于0在内存中存储的时候,是所有的整数位全部被填充了0,所以按二进制位和一个数值进行或运算,对应位上无论是0还是10进行或运算,都会得到它本身,但是由于数字0在内存中不存在小数部分,所以位或运算之后intervalの小数部分は切り捨てられます。実際、切り捨ては小数部分を切り捨てることによって実現されます。

  • ちょっとした操作なのでMath.floor()よりも早くなります。

いいねを押す +0
三叔

本当の理由は、js 内の自動型変換です。

js内の値はすべて64位浮点型表示的。当一个数值需要进行位运算时,js会自动将它转换为32位有符号で四捨五入され、小数部分が切り捨てられます。

n|0; n>>0; //次の 0 は、n の整数値が変更されないことを保証するためにのみ使用されます。

64 ビットから 32 ビットに削減すると、精度が低下します。 小心!、最大有効範囲: 2^32/2-1

リーリー
いいねを押す +0
给我你的怀抱

両方を達成できます、interval = interval | 0 这个是一个写作的技巧,看个人爱好吧。可能就是interval = interval | 0这种写法运行会快一点,写代码这个也肯定比Math.floor早く書きましょう!

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート