ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript の数値範囲の概要_JavaScript ヒント

JavaScript の数値範囲の概要_JavaScript ヒント

WBOY
WBOYオリジナル
2016-05-16 16:23:391540ブラウズ

JavaScript のすべての数値は、整数であろうと小数であろうと、Number 型です。プログラム内では、Number 型は基本的に 64 ビット浮動小数点数であり、Java の double 型浮動小数点数と一致するため、JavaScript の数値はすべて浮動小数点数です。 IEEE 754 標準 (浮動小数点演算標準) に従って、JavaScript が表現できる数値範囲は、プラスまたはマイナス 1.7976931348623157 の 10 の 308 乗であり、表現できる最小の小数はプラスまたはマイナス 5 の 10 乗です。これら 2 つの境界値は、それぞれ Number オブジェクトの MAX_VALUE 属性と MIN_VALUE 属性にアクセスすることで取得できます。

整数の場合、ECMAScript 標準 (http://ecma262-5.com/ELS5_HTML.htm#Section_8.5) の要件に従って、JavaScript が表現および実行できる整数の範囲正確な算術演算は次のとおりです。プラスまたはマイナス 2 の 53 乗、つまり、最小値 -9007199254740992 から最大値 9007199254740992 までの範囲を超える整数については、JavaScript は演算を実行できますが、演算結果の正確さ。整数ビット操作 (シフトやその他の操作など) の場合、JavaScript は 32 ビット整数、つまり -2147483648 から 2147483647 までの整数のみをサポートすることに注意してください。

実験

JavaScript で最大の数値の絶対値と最小の小数の絶対値を表示します:

コードをコピー コードは次のとおりです:

console.log(Number.MAX_VALUE);
console.log(Number.MIN_VALUE);

表示される結果は、1.7976931348623157e 308 および 5e-324 です。

プラスまたはマイナス 2 の 53 乗の範囲外の整数の場合、JavaScript は正確な計算結果を提供できません:

コードをコピーします コードは次のとおりです:

var a = 9007199254740992;
console.log(a 3);


正しい計算結果は9007199254740995であるはずですが、JavaScriptによる計算結果は9007199254740996となります。計算式を変更してみると、整数が9007199254740992より大きい限り、この計算結果は頻繁にエラーが発生することがわかります。計算精度の偏差が許容できる場合、次の例の結果はさらに深刻になります:


コードをコピー コードは次のとおりです:

var MAX_INT = 9007199254740992;
for (var i = MAX_INT; i < MAX_INT 2; i) {
// 無限ループ
}


計算精度の問題により、上記の for ステートメントは無限ループに陥ります。

ビット単位の演算の場合、JavaScript は 32 ビット整数のみをサポートします:


コードをコピー コードは次のとおりです:

var smallInt = 256;
var bigInt = 2200000000;
console.log(smallInt / 2);
console.log(smallInt >> 1);
console.log(bigInt / 2);
console.log(bigInt >> 1);


32 ビット以内の整数 (256) の場合、JavaScript は正しいビット演算を実行でき、結果は除算演算の結果 (128) と一致していることがわかります。 32 ビット以外の整数の場合、JavaScript は正しい除算演算 (1100000000) を実行できますが、ビット演算の実行後に得られる結果は正しい結果 (-1047483648) とは程遠いものになります。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。