JSには、数値データ型が1つしかありません。整数であろうとフローティングポイント番号であろうと、JSはそれを数字として分類します。
タイプ17; // "番号"
タイプ98.6; // "番号"
タイプ2.1; // "番号"
JSのすべての数値は、二重精度の浮動小数点数です。これは、IEEE754標準によって処方された64ビットのコード化された数字です(このことは何ですか、私は知りません、それを調べてチェックしてください)
では、JSはどのように整数を表現していますか?二重精度の浮動小数点数は、最大53ビット精度で整数を完全に表すことができます(コンセプトなし、私はあまりデータを処理していません、私は使い果たしていません!)、および-90071992547409992(-253)から9007199254740992(253)までのすべての整数は、有効な倍の正確な床数値です。
ほとんどの算術演算子は、整数、実数、または両方の組み合わせを使用して計算できます。
0.1*1.9 //0.19
-99+100 // 1
21-12.3 //8.7
2.5/5 //0.5
21%8 // 5
算術演算子は非常に特別です。 JSは、オペランドをフローティングポイント番号として直接計算するものではありませんが、暗黙的にそれらを32ビット整数に変換して操作を実行します。 (正確には、それは32ビットのビッグエンディアンのうち2つを表す整数に変換されます(正直なところ、私は本当にここで何を意味するのか本当にわかりません、人気科学を検索してください))ビットワイズまたは操作式を使用して使用します。
例:
8 | 1; // 9
計算プロセス
まず第一に、8と1は二重精度の浮動小数点数です。ただし、32ビット整数、つまり32ビットのバイナリ表現として表現することもできます。
整数8は、次のように32ビットバイナリとして表されます。
0000 0000 0000 0000 0000 0000 0000 1000
それもそうかもしれません
(8).toString(2); //「1000」
パラメーターのtoStringは変換ベースです
(以下は私が他のカーディナリティと変換しようとしたものであり、この記事とは何の関係もありません)
(8).toString(8); // "10"
(8).ToString(16); // "8"
整数1は、次のように32ビットバイナリとして表されます。
0000 0000 0000 0000 0000 0000 0000 0000 0001
ビットワイズまたは
0000 0000 0000 0000 0000 0000 0000 1000
0000 0000 0000 0000 0000 0000 0000 0000 0001
--------------------------------------------------------------------------------------------------------------------------------------------------------------------- -
0000 0000 0000 0000 0000 0000 0000 1001
同じことが標準のライブラリ関数Parseint検証を使用し、2をカーディナリティとして使用します。主要な0は計算結果に影響しません。これは不要です。
parseint( '1001'、2)// 9
(以下は私が他のカーディナリティと変換しようとしたものであり、この記事とは何の関係もありません)
parseint( '1001'、8)// 513
parseint( '1001'、16)// 4097
算術演算を要約するプロセスは、オペランドを整数に変換し、整数ビットモードを使用して操作を実行することであり、最終的に結果を標準のJSフローティングポイント番号に変換することです。
浮動小数点数の警告:悪名高い不正確である。例えば
0.1+0.2; //0.300000000000000004
理由:64ビットの浮動小数点数の精度はすでに非常に高くなっていますが、二重精度の浮動小数点数は有限の数字のセットのみを表すことができますが、実数のすべてのセットを表すことはできません。フローティングポイント操作は、最も近い表現可能な実数に丸めて、おおよその結果のみを生成できます。一連の操作を実行すると、丸めエラーが蓄積するにつれて、操作結果の精度が低下します。丸めは、算術操作の法則にもいくつかの逸脱を引き起こします。たとえば、絆の法則。任意の実数用
x、y、zは常に(x+y)+z = x+(y+z)を満たします
フローティングポイントは必ずしも次のとおりではありません。
(0.1+0.2)+0.3; //0.600000000000000001
0.1+(0.2+0.3); //0.6
浮動小数点数は、精度とパフォーマンスを量ります。精度を気にするときは、浮動小数点数の制限に注意してください。
解決策は、浮動小数点操作を整数操作に変換することです。
(10+20)+30; // 60
10+(20+30); // 60
次に、拡大係数を分割します。整数範囲は-253〜253以内である必要があることに注意してください。
要約します
1.JSの数は二重の速度の浮動小数点数です
2。JSの整数は、単一のタイプではなく、二重精度の浮動小数点数のサブセットにすぎません
3。ビット操作は、数字を32ビットの署名された整数として扱います
4。浮動小数点操作の精度に注意してください
上記の記事JavaScriptの浮動小数点数の詳細な理解は、私があなたと共有したすべてのコンテンツです。私はそれがあなたに参照を与えることができることを願っています、そしてあなたがwulin.comをもっとサポートできることを願っています。