TECH I.S.

JavaScript 数値


JavaScriptには1種類の数値しかありません。数値は、小数点の有無に関係なく記述できます。


let x = 3.14;    // 小数を含む数値 let y = 3;       // 小数点のない数値

極大または極小の数値は、科学的(指数)表記で記述できます。

let x = 123e5;    // 12300000 let y = 123e-5;   // 0.00123


JavaScriptの数値は常に64ビット浮動小数点です

他の多くのプログラミング言語とは異なり、JavaScriptは、整数、短、長、浮動小数点など、さまざまな種類の数値を定義しません。

JavaScriptの数値は、国際的なIEEE754標準に従って、常に倍精度浮動小数点数として格納されます。この形式は、数値を64ビットで格納します。数値(小数)はビット0~51に格納され、指数はビット 52~62に格納され、符号はビット63に格納されます。


値 (別名、分数/仮数)

指数

サイン

52ビット(0 ~ 51) 11ビット(52 - 62) 1ビット(63)

整数精度

整数(ピリオドまたは指数表記のない数値)は、最大15桁まで正確です。

let x = 999999999999999;   // xは 999999999999999 let y = 9999999999999999;  // yは 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は数値です let y = "100";       // yは文字列です

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";

isNaN()値が数値ではないかどうかを調べるには、グローバルJavaScript関数を使用できます。

let x = 100 / "Apple"; isNaN(x);

数学演算で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:

無限大

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 Infinitynumberを返します。

typeof Infinity;


16進数

数値定数の前に0xがある場合、JavaScriptは数値定数を16進数として解釈します。

let x = 0xFF;

(07のように)先頭にゼロを付けて数値を記述しないでください。
一部のJavaScriptのバージョンでは、先頭にゼロを付けて記述した場合、数値を8進数として解釈します。

デフォルトでは、JavaScript は数値をbase 10進数で表示します。

ただし、このメソッドを使用してbase 2base 36までのtoString()数値を出力することはできます。

16 進数はbase 16とします。 10 進数はbase 10とします。8進数はbase 8とします。バイナリはbase 2です。

let myNumber = 32; myNumber.toString(32); myNumber.toString(16); myNumber.toString(12); myNumber.toString(10); 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はコードを複雑にし、実行速度を遅くします。
数値オブジェクトは予期しない結果をもたらす可能性があります。

演算子==を使用する場合、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);

2つのJavaScript オブジェクトを比較すると常にfalseが返されます。

完全なJavaScriptの数値リファレンス

完全な番号の参照については、次のページをご覧ください。
完全なJavaScript数値リファレンス(開発準備中)
このリファレンスには、Numberのすべてのプロパティとメソッドの説明と例が含まれています。

プログラミング学習を加速させる

プログラミングをプロの講師に教えてもらいませんか。

テックアイエスのプログラミングスクールは初心者も大歓迎です。年齢制限もありません。転職・副業に強く、挫折させない手厚いサポートで稼ぐ力を身につけましょう!

スクールの詳細