JavaScript番号
JavaScriptには1種類の番号しかありません。数値は、小数の有無にかかわらず書き込むことができます。
例
let x = 3.14; // A number with decimals
let y = 3; // A number without decimals
非常に大きい数または非常に小さい数は、科学的(指数)表記で書くことができます。
例
let x = 123e5; // 12300000
let y = 123e-5; // 0.00123
JavaScriptの数値は常に64ビット浮動小数点です
他の多くのプログラミング言語とは異なり、JavaScriptは、整数、短い、長い、浮動小数点など、さまざまな種類の数値を定義しません。
JavaScript番号は、国際IEEE 754標準に従って、常に倍精度浮動小数点数として格納されます。
この形式では、数値は64ビットで格納され、数値(小数部)はビット0〜51に格納され、指数はビット52〜62に格納され、符号はビット63に格納されます。
値(別名分数/仮数) | 指数 | サイン |
---|---|---|
52ビット(0〜51) | 11ビット(52-62) | 1ビット(63) |
整数精度
整数(ピリオドまたは指数表記のない数値)は、最大15桁の精度です。
例
let x = 999999999999999; // x will be 999999999999999
let y = 9999999999999999; // y will be 10000000000000000
小数点以下の最大数は17です。
浮動精度
浮動小数点演算は常に100%正確であるとは限りません。
let x = 0.2 + 0.1;
上記の問題を解決するには、乗算と除算が役立ちます。
let x = (0.2 * 10 + 0.1 * 10) / 10;
数字と文字列の追加
警告 !!
JavaScriptは、加算と連結の両方に+演算子を使用します。
数字が追加されます。文字列は連結されます。
2つの数値を加算すると、結果は数値になります。
例
let x = 10;
let y = 20;
let z = x + y;
2つの文字列を追加すると、結果は文字列の連結になります。
例
let x = "10";
let y = "20";
let z = x + y;
数値と文字列を追加すると、結果は文字列の連結になります。
例
let x = 10;
let y = "20";
let z = x + y;
文字列と数値を追加すると、結果は文字列の連結になります。
例
let x = "10";
let y = 20;
let z = x + y;
よくある間違いは、この結果が30になると予想することです。
例
let x = 10;
let y = 20;
let z = "The result is: " + x + y;
よくある間違いは、この結果が102030になると予想することです。
例
let x = 10;
let y = 20;
let z = "30";
let result = x + y + z;
JavaScriptインタープリターは左から右に動作します。
xとyは両方とも数値であるため、最初の10 +20が追加されます。
次に、zが文字列であるため、30 + "30"が連結されます。
数値文字列
JavaScript文字列には数値コンテンツを含めることができます。
let x = 100; // x is a number
let y = "100"; // y is a
string
JavaScriptは、すべての数値演算で文字列を数値に変換しようとします。
これは機能します:
let x = "100";
let y = "10";
let z = x / y;
これも機能します:
let x = "100";
let y = "10";
let z = x * y;
そしてこれはうまくいくでしょう:
let x = "100";
let y = "10";
let z = x - y;
しかし、これは機能しません:
let x = "100";
let y = "10";
let z = x + y;
最後の例では、JavaScriptは+演算子を使用して文字列を連結します。
NaN-数字ではありません
NaN
はJavaScriptの予約語で、数値が有効な数値ではないことを示します。
数値以外の文字列を使用して算術演算を実行しようとすると、NaN
(数値ではなく)次のようになります。
例
let x = 100 / "Apple";
ただし、文字列に数値が含まれている場合、結果は数値になります。
例
let x = 100 / "10";
グローバルJavaScript関数isNaN()
を使用して、値が数値ではないかどうかを確認できます。
例
let x = 100 / "Apple";
isNaN(x);
に気をつけてNaN
ください。数学演算で使用する場合NaN
、結果も次のようになりますNaN
。
例
let x = NaN;
let y = 5;
let z = x + y;
または、結果はNaN5のような連結になる可能性があります。
例
let x = NaN;
let y = "5";
let z = x + y;
NaN
は数値です:typeof NaN
戻り値number
:
例
typeof NaN;
インフィニティ
Infinity
(または-Infinity
)は、可能な最大数以外の数を計算した場合にJavaScriptが返す値です。
例
let myNumber = 2;
// Execute until Infinity
while (myNumber != Infinity) {
myNumber = myNumber * myNumber;
}
0(ゼロ)による除算も次を生成しInfinity
ます:
例
let x = 2 / 0;
let y = -2 / 0;
Infinity
は数値です:をtypeof Infinity
返しますnumber
。
例
typeof Infinity;
16進数
JavaScriptは、数値定数の前に0xが付いている場合、16進数として解釈します。
例
let x = 0xFF;
先行ゼロ(07など)を含む数値は絶対に記述しないでください。
一部のJavaScriptバージョンは、先行ゼロで記述されている場合、数値を8進数として解釈します。
デフォルトでは、JavaScriptは数値を基数10の小数として表示します。
ただし、このメソッドを使用して、基数2
から基数36toString()
までの数値を出力できます。
16進数は基数16です。10進数は基数10です。8進数は基数8です。バイナリは基数2です。
例
let myNumber = 32;
myNumber.toString(10);
myNumber.toString(32);
myNumber.toString(16);
myNumber.toString(8);
myNumber.toString(2);
オブジェクトとしてのJavaScript番号
通常、JavaScriptの数値は、リテラルから作成されたプリミティブ値です。
let x = 123;
new
ただし、数値は、キーワード:を使用してオブジェクトとして定義することもできます。
let y = new Number(123);
例
let x = 123;
let y = new Number(123);
Numberオブジェクトを作成しないでください。
キーワードはコードを複雑にし、new
実行速度を遅くします。
Number Objectsは、予期しない結果を生成する可能性があります。
演算子を使用する場合==
、xとyは等しい:
let x = 500;
let y = new Number(500);
演算子を使用する場合===
、xとyは等しくありません。
let x = 500;
let y = new Number(500);
との違いに注意して(x==y)
ください(x===y)
。
(x == y)
正しいか間違っているか?
let x = new Number(500);
let y = new Number(500);
(x === y)
正しいか間違っているか?
let x = new Number(500);
let y = new Number(500);
Comparing two JavaScript objects always returns false.
Complete JavaScript Number Reference
For a complete Number reference, visit our:
Complete JavaScript Number Reference.
The reference contains descriptions and examples of all Number properties and methods.