JavaScriptの数字
- 前のページ JS 字符列テンプレート
- 次のページ JS BigInt
JavaScript には数値の種類が一種類のみです。
数値を書くとき、小数点があるかどうかは自由です。
JavaScript 数値
JavaScriptの数値は小数点を含むかどうかに関わらず、書けることができます:
実例
var x = 3.14; // 小数点がある数値 var y = 3; // 小数点のない数値
非常に大きい数や非常に小さい数は科学記数法で書くことができます:
実例
var x = 123e5; // 12300000 var 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桁まで正確になります。
実例
var x = 999999999999999; // x は 999999999999999 になります var y = 9999999999999999; // y は 10000000000000000 になります
小数の最大桁数は 17桁ですが、浮動小数点の算術は常に 100% 精確ではありません:
実例
var x = 0.2 + 0.1; // x は 0.30000000000000004 になります
上記の問題を解くのに役立つのは、乗除法の使用です:
実例
var x = (0.2 * 10 + 0.1 * 10) / 10; // x は 0.3 になります
数と文字列の足し算
警告!!
JavaScriptの加法と連結(連結)はすべて + 演算子を使用します。
数は加法で、文字列は連結で使用されます。
二つの数を足すと、結果は数になります:
実例
var x = 10; var y = 20; var z = x + y; // z は 30(数)になります
二つの文字列を足すと、結果は文字列の連結になります:
実例
var x = "10"; var y = "20"; var z = x + y; // z は 1020(文字列)になります
数と文字列を足すと、結果は文字列の連結になります:
実例
var x = 10; var y = "20"; var z = x + y; // z は 1020(文字列)になります
文字列と数値を足すと、結果も文字列の連結になります:
実例
var x = "10"; var y = 20; var z = x + y; // z は 1020(文字列)になります
一般的な間違いは、結果が 30 であると考えます:
実例
var x = 10; var y = 20; var z = "The result is: " + x + y;
一般的な間違いは、結果が 102030 であると考えます:
実例
var x = 10; var y = 20; var z = "30"; var result = x + y + z;
JavaScriptは左から右に構文解析を行います。
x と y がどちらも数であるため、10 + 20 は足されます。
z は文字列であるため、30 + "30" は連結されます。
数値文字列
JavaScriptの文字列は数字を含むことができます:
var x = 100; // x は数です var y = "100"; // y は文字列です
すべての数値演算では、JavaScriptは文字列を数値に変換しようとします:
この例はこのように動作します:
var x = "100"; var y = "10"; var z = x / y; // z は 10 になります
この例もこのように動作します:
var x = "100"; var y = "10"; var z = x * y; // z は 1000 になります
この例はこのように動作します:
var x = "100"; var y = "10"; var z = x - y; // z は 90 になります
しかし、この例では上の例のように動作しません:
var x = "100"; var y = "10"; var z = x + y; // z は 110 ではありません(10010です)
最後の例では、JavaScriptは+演算子で文字列を連結しました。
NaN - 非数値
NaN
JavaScriptの保留語であり、ある数が合法な数でないことを示します。
非数字の文字列で除法を試みると NaN(Not a Number)が得られます:
実例
var x = 100 / "Apple"; // x は NaN(Not a Number)になります
ただし、文字列に数値が含まれている場合、結果は数になります:
実例
var x = 100 / "10"; // x は 10 になります
グローバルな JavaScript 関数を使用して: isNaN()
ある値が数かどうかを確認するために:
実例
var x = 100 / "Apple"; isNaN(x); // 返回 true,因为 x は数ではありません
に注意してください NaN
。数学の演算で NaN
、その場合、結果も NaN
:
実例
var x = NaN; var y = 5; var z = x + y; // z は NaN になります。
結果は文字列結合になるかもしれません:
実例
var x = NaN; var y = "5"; var z = x + y; // z は NaN5 になります。
NaN
は数です、typeof NaN
返却 number
:
実例
typeof NaN; // 返却値は "number"
Infinity
Infinity
(または -Infinity
)はJavaScriptが数の計算で最大可能な数の範囲を超えた場合に返す値です。
実例
var myNumber = 2; while (myNumber != Infinity) { // Infinity まで実行します myNumber = myNumber * myNumber; }
0(ゼロ)で除算することでも、 Infinity
:
実例
var x = 2 / 0; // x は Infinity になります。 var y = -2 / 0; // y は -Infinity になります。
Infinity
は数です:typeOf Infinity
返却 number
。
実例
typeof Infinity; // 返却値は "number"
16進数
JavaScriptは接頭辞が 0x
の数値定数は16進数として解釈されます。
実例
var x = 0xFF; // x は 255 になります。
絶対に先頭にゼロがある数字(例えば 07)を使用しないでください。
一部のJavaScriptバージョンでは、先頭にゼロがある数値を8進数として解釈します。
デフォルトで、Javascriptは数値を10進数の小数として表示します。
ただし、以下を使用することもできます toString()
このメソッドは数値を16進数、8進数、または2進数に変換します。
実例
var myNumber = 128; myNumber.toString(16); // 返却値は 80 myNumber.toString(8); // 返却値は 200 myNumber.toString(2); // 返却値は 10000000
数値はオブジェクトでもできます
通常 JavaScript 数値はリテラルで作成された原始値です:var x = 123
しかし、キーワードを使用することでも可能です new
オブジェクトとして定義されています:var y = new Number(123)
実例
var x = 123; var y = new Number(123); // typeof x は number を返します // typeof y は object を返します
数値オブジェクトを作成しないでください。これにより実行速度が遅くなります。
new
キーワードはコードを複雑にし、予期せぬ結果を引き起こすことがあります:
以下の方法で使用する場合: ==
相等演算子を使用すると、一致する数は見た目では一致しています:
実例
var x = 500; var y = new Number(500); // (x == y) は true です、なぜなら x と y が同じ値を持っているからです
以下の方法で使用する場合: ===
相等演算子の後で、一致する数が不一致になるのは、以下の理由でです: ===
演算子は型と値の両方が一致する必要があります。
実例
var x = 500; var y = new Number(500); // (x === y) は false です、なぜなら x と y の型が異なるからです
さらに悪い状況です。オブジェクトは比較できない:
実例
var x = new Number(500); var y = new Number(500); // (x == y) は false です、なぜならオブジェクトは比較できないからです
JavaScript オブジェクトは比較できません。
- 前のページ JS 字符列テンプレート
- 次のページ JS BigInt