検索

ホームページ  >  に質問  >  本文

JavaScript - jsでの切り捨て

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

PHP中文网PHP中文网2765日前1033

全員に返信(5)返信します

  • 某草草

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

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

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

    返事
    0
  • 过去多啦不再A梦

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

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

    返事
    0
  • 给我你的怀抱

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

    • まず第一に、これらの小さな違いについては、2 階の S1ngS1ng が正しいです。

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

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

    返事
    0
  • 三叔

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

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

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

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

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

    リーリー

    返事
    0
  • 给我你的怀抱

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

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

    返事
    0
  • キャンセル返事