JavaScript 数値
JavaScriptには1種類の数値しかありません。数値は、小数点の有無に関係なく記述できます。
極大または極小の数値は、科学的(指数)表記で記述できます。
JavaScriptの数値は常に64ビット浮動小数点です
他の多くのプログラミング言語とは異なり、JavaScriptは、整数、短、長、浮動小数点など、さまざまな種類の数値を定義しません。
JavaScriptの数値は、国際的なIEEE754標準に従って、常に倍精度浮動小数点数として格納されます。この形式は、数値を64ビットで格納します。数値(小数)はビット0~51に格納され、指数はビット 52~62に格納され、符号はビット63に格納されます。
値 (別名、分数/仮数) |
指数 |
サイン |
---|---|---|
52ビット(0 ~ 51) | 11ビット(52 - 62) | 1ビット(63) |
整数精度
整数(ピリオドまたは指数表記のない数値)は、最大15桁まで正確です。
小数点以下の最大桁数は17です。
浮動精度
数値と文字列の追加
警告 !!
JavaScriptでは、加算と連結の両方に、+演算子を使用します。数字が追加されます。文字列が連結されます。
2 つの数値を加算すると、結果は数値になります。
2つの文字列を追加すると、結果は文字列連結になります。
数値と文字列を追加すると、結果は文字列連結になります。
文字列と数値を追加すると、結果は文字列連結になります。
よくある間違いは、この結果が30であると期待することです。
よくある間違いは、この結果が102030であると期待することです。
JavaScriptのインタープリターは左から右に機能します。
xとyは両方とも数値であるため、最初の10+20が加算されます。
次に、zが文字列であるため、30+"30"が連結されます。
数値文字列
JavaScript文字列には数値コンテンツを含めることができます。
JavaScriptは、すべての数値演算で文字列を数値に変換しようとします。
これは上手くいきます。
これも機能します:
そして、これはうまくいきます。
しかし、これはうまくいきません。
最後の例では、JavaScriptは、+演算子を使用して文字列を連結しています。
NaN - 非数
NaN
数値が正当な数値ではないことを示すJavaScriptの予約語です。
数値以外の文字列で算術を実行しようとすると、NaN
(数字ではありません)という結果になります。
ただし、文字列が数値の場合、結果は数値になります。
isNaN()
値が数値ではないかどうかを調べるには、グローバルJavaScript関数を使用できます。
数学演算でNaN
結果を使用した場合、結果も次のようになります。
または、結果はNaN5のような連結になる場合があります。
NaN
は数字です:typeof NaN
戻り値number
:
無限大
Infinity
(また-Infinity
)は、可能な最大数以外の数を計算した場合にJavaScriptが返す値です。
例
0(ゼロ)による除算もInfinity
が生成されます:
Infinity
は数字です。typeof Infinity
はnumber
を返します。
16進数
数値定数の前に0xがある場合、JavaScriptは数値定数を16進数として解釈します。
(07のように)先頭にゼロを付けて数値を記述しないでください。
一部のJavaScriptのバージョンでは、先頭にゼロを付けて記述した場合、数値を8進数として解釈します。
デフォルトでは、JavaScript は数値をbase 10進数で表示します。
ただし、このメソッドを使用してbase 2にbase 36までのtoString()
数値を出力することはできます。
16 進数はbase 16とします。 10 進数はbase 10とします。8進数はbase 8とします。バイナリはbase 2です。
例
オブジェクトとしての JavaScriptの数値
通常、JavaScriptの数値は、リテラルから作成されたプリミティブな値です。
ただし、数値はnew
を使用してオブジェクトとして定義することもできます。:
Numberオブジェクトを作成しないでください。new
はコードを複雑にし、実行速度を遅くします。
数値オブジェクトは予期しない結果をもたらす可能性があります。
(x==y)
と(x===y)
の違いに注意してください。
2つのJavaScript オブジェクトを比較すると常にfalseが返されます。
完全なJavaScriptの数値リファレンス
完全な番号の参照については、次のページをご覧ください。完全なJavaScript数値リファレンス(開発準備中)。
このリファレンスには、Numberのすべてのプロパティとメソッドの説明と例が含まれています。
プログラミング学習を加速させる
プログラミングをプロの講師に教えてもらいませんか。