
Jika Anda telah mempelajari bahasa dengan ketikan yang kuat, maka Anda harus memahami bahwa nilai tertentu harus disimpan dalam memori dengan sejumlah byte yang telah dialokasikan sebelumnya. Misalnya, int 4 byte dialokasikan untuk sebuah bilangan , yang sama dengan 32 bit dan dapat berisi nilai 2³², yang berarti kita dapat mengekspresikan dalam sistem desimal dari -2 147483 647 menjadi 2 147 483 647. Jenis bilangan apa yang digunakan di JS?
Standar EcmaScript mengatakan bahwa Number Value: nilai primitif yang sesuai dengan format biner 64-bit nilai IEEE 754 presisi ganda. Artinya, angka double ( angka presisi ganda) menempati 8 byte = 64 bit (yang mana 1 bit dialokasikan untuk menunjukkan tanda angka, 11 bit untuk pesanan dan 52 - mantissa, semuanya setelah titik desimal).

Rentang nilai: 1.7E +/- 308 (15 digit). Anda dapat memeriksa dan melihat nomor ini secara lengkap dengan mencetak jumlah maksimum yang diizinkan dari objek Nomor di konsol. Number.MAX_VALUEBerikut ini tautan ke standar IEEE754: https://en.wikipedia.org/wiki/IEEE_754 Jika Anda melampaui angka ini, maka Nomor akan memberi kami nilai Infinity...

, double?
: 9,007,199,254,740,991 ~9 . , . Number: Number.MAX_SAFE_INTEGER.
, , :

, isSafeInteger():

, , double. , ? , , , int 4 , 8! , V8 Number:

, . int int32 Uint32 ( ±), BigInt. Integer Number, Int32 Uint32 Integer.

gitHub': https://github.com/v8/v8/blob/master/include/v8.h#L3039
V8 C++ 4 . , V8 double 8 . , , .

Performance Tip for JS in v8 Chris Wilsonhttps://www.html5rocks.com/en/tutorials/speed/v8/
. JS — , API . , window.setTimeout(). JavaScript. setTimeout int32, , 2 147 483 647, 9 . setTimout() 2 147 483 648 ( 1 Int32), . JS . .
P.S. , setTimeout 25 . , .
Terima kasih semua, berlangganan halaman VK saya dan bergabunglah dengan grup penggemar pengembangan frontend kami