JSにはどのような種類の番号がありますか?

厳密に型指定された言語を学習した場合は、特定の値を事前に割り当てられたバイト数とともにメモリに格納する必要があることを理解する必要があります。たとえば、int 32ビットに等しい2³²の値を含むことができる数値に4バイトが 割り当てられます。つまり、-2 147 483647から2147 483647までの10進法で表すことができます。JSではどのタイプの数値が使用されますか。

EcmaScript標準では、数値:倍精度64ビットバイナリ形式のIEEE754値に対応するプリミティブ値とされています。つまり、double 8バイト= 64ビットを占める数値 (倍精度の数値)(そのうちの1ビットは数値の符号を示すために割り当てられ、11ビットは順序を示し、52-マンティッサは小数点以下すべてを示します)。

ダブルを表すビットの割り当て
ダブルを表すビットの割り当て

値の範囲:1.7E +/- 308(15桁)。コンソールにNumberオブジェクトの最大許容数を出力することで、この数を完全に確認できます Number.MAX_VALUE。IEEE754標準へのリンクは次のとおりです。https:  //en.wikipedia.org/wiki/IEEE_754この数を超えると、Numberは値を示します。  Infinity..。

最大浮動小数点double値
最大浮動小数点double値

,  double?

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

, , :

最大許容整数より大きい数値の比較。 数学的には、これらは等しい値ではありませんが、trueを返します。
, . , true.

,  isSafeInteger():

番号が安全かどうかを確認する

, ,  double. , ? , , ,  int  4 , 8! , V8 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 . , , .

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

みなさん、ありがとうございました。私のVKページ購読し、フロントエンド開発のファンのグループに参加しください。




All Articles