私はEloquent JavaScriptを読んでいますが、この説明で「行き詰まり」ました。最初はスキップすると思っていましたが、戻ってきて理解できませんでした.64ビットの影響をグーグルで調べてみました.そのようなものですが、答えが見つかりませんでした。
私はいくつかのものを手に入れません.10^3?
なぜそれは3桁の10進数に制限されているのですか? タイピング1.99999999999
してみたところうまくいきました。この文をスキップせずに完全に理解できる場所はありますか? どこかで、javascript には近似の問題があることを読んだ2.000000000
ことがありますが2.000000000001
、それが問題を引き起こす可能性がありますが、本のこの部分は私には似ていないようです。
どんな助けでも感謝します。
この本では分からない部分です
This is what 144 looks like in bits:
0100000001100010000000000000000000000000000000000000000000000000
The number above has 64 bits. Numbers in JavaScript always do. This has one important repercussion: There is a limited amount of different numbers that can be expressed. With three decimal digits, only the numbers 0 to 999 can be written, which is 10^3 = 1000 different numbers. With 64 binary digits, 2^64 different numbers can be written. This is a lot, more than 10^19 (a one with nineteen zeroes).
Not all whole numbers below 10^19 fit in a JavaScript number though. For one, there are also negative numbers, so one of the bits has to be used to store the sign of the number. A bigger issue is that non-whole numbers must also be represented. To do this, 11 bits are used to store the position of the fractional dot within the number.
That leaves 52 bits. Any whole number less than 2^52 (which is more than 10^15) will safely fit in a JavaScript number. In most cases, the numbers we are using stay well below that, so we do not have to concern ourselves with bits at all. Which is good. I have nothing in particular against bits, but you do need a terrible lot of them to get anything done. When at all possible, it is more pleasant to deal with bigger things.