Jenis nomor apa yang dimiliki Nomor di JS?

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).

Mengalokasikan bit untuk mewakili ganda
Mengalokasikan bit untuk mewakili ganda

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...

Nilai ganda floating point maksimum
Nilai ganda floating point maksimum

,  double?

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

, , :

Perbandingan angka yang lebih besar dari bilangan bulat maksimum yang diperbolehkan.  Secara matematis, ini bukan nilai yang sama, tetapi kami akan mengembalikan nilai true.
, . , true.

,  isSafeInteger():

Memeriksa apakah suatu nomor aman

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

Kelas berbeda untuk angka.  Integer mewarisi dari Number
. Integer Number

, .  int  int32  Uint32 ( ±),  BigIntInteger   NumberInt32  Uint32   Integer.

gitHub': https://github.com/v8/v8/blob/master/include/v8.h#L3039

V8 C++ 4 . , V8 double 8 . , , .

Kami secara dinamis mengubah jenis variabel untuk V8
V8

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




All Articles