数値の値は、次のように一連の数字で構成されます。
5
数値データ型には、特別なグローバル プロパティもいくつか含まれており、
数値の概念を表します(Infinity
、NaN
など)。値の意味を表します。
"not a number",計算を実行しようとしたときに起こり得る結果について、
計算に使用されます。
数値オブジェクト
値が Number()
関数に渡されると、その値は次の値に変換されます。
表します。たとえば、数値文字列は同等のものになります。
数値プリミティブ:
Number( "10" );
> 10
false
または null
の値を Number()
に渡すと、0
が返され、true
が返されると、
1
。
Number( null );
> 0
Number( false );
> 0
Number( true );
> 1`
値を変換できない場合(undefined
や文字列の場合など)
数字以外の文字を含む場合、Number
関数は NaN
を返します。
Number( undefined );
> NaN
Number( "The number 3." );
> NaN
プロトタイプの継承で詳しく説明しているように、
ほとんどの場合、Number
オブジェクトを
コンストラクタです。これは、数値リテラルの代わりに Number
オブジェクトを作成するためです。
let numObject = new Number( 15 );
numObject;
> Number { 15 }
このオブジェクトは、算術演算で割り当てられた値として動作しますが、 数値リテラルとの厳密な等価比較に失敗します。これは、データ型が 一致しない場合があるからです。
let tenObject = new Number( 10 );
tenObject + 5;
> 15
tenObject === 10;
> false
浮動小数点数と整数
JavaScript は 64 ビット IEEE 754-1985 倍精度という 1 つの数値型のみ
-2^1024
と 2^1024
。JavaScript は数値をメモリに保存する前に、まず
その数値を 2 進数の浮動小数点数(浮動小数点数)に変換します。
この 64 ビットのストレージ(1 つの正または負の「符号」ビット、1 つのビット 指数、小数には 52 ビットなど)を使用すると、 桁数が許容範囲に含まれていません。この制限は Google Cloud の 数値型に変換する必要があります
0.1 + 0.7
> 0.7999999999999999
数値は整数(浮動小数点数)として格納できます。
-(2^53 − 1)
~2^53 − 1
の小数を指定しない。浮動小数点数と
基本的に同じ方法で格納されるため、実質的な違いはありません。
大きく影響しますただし、常に整数を使用して、
精度の誤差を回避できます
数値演算子
数値プリミティブで標準的な算術演算子を使用すると、 演算の順序 apply: かっこで囲まれた式が最初に評価され、その後で 指数、乗算、除算、加算、減算です
演算子 | 名前 | 説明 | 用途 | 結果 |
---|---|---|---|---|
+ |
加算 | 2+2 |
4 |
|
- |
減算 | 4-2 |
2 |
|
* |
乗算 | 2*5 |
10 |
|
/ |
部門 | 10/5 |
2 |
|
++ |
増やす | 数値に 1 を足します | 2++ |
3 |
-- |
減らす | 数値から 1 を減算する | 3-- |
2 |
** |
指数 | 最初の を発生させた結果を返します。 オペランドを第 2 オペランドのべき乗にします。 |
2**4 |
16 |
% |
残り | が発生したときの余りを返します。 第 1 オペランドを第 2 オペランドで除算する |
12%5 |
2 |
数学の代入演算子を使用して、数学的な オペレーションを実行し、すぐにその値を 変数に追加します。
演算子 | 名前 | 用途 |
---|---|---|
+= |
追加の割り当て | myValue += 2 |
-= |
減算の代入 | myValue -= 2 |
*= |
乗算の割り当て | myValue *= 2 |
/= |
部門の割り当て | myValue /= 2 |
**= |
指数の割り当て | myValue **= 2 |
%= |
残りの割り当て | myValue %= 2 |
シンボリック値
数値プリミティブは、「not a number」という特殊なケースもあります。
値(NaN
)と無限大を表す値(正または無限大)
(Infinity
)または負の数(-Infinity
)。
ゼロ除算の結果として Infinity
が発生することはめったにありません。
多くのプログラミング言語は代わりにエラーをスローします。
10 / 0
> Infinity
JavaScript では大文字と小文字が区別されます。Infinity
は数値データ型です。
無限大の概念を表しますが、infinity
は特別な意味を持ちません。
Infinity
> Infinity
infinity
> Uncaught ReferenceError: infinity is not defined
NaN
(「Not a Number」)
算術演算の結果が頻繁に出力される場合は、
数値では表現できませんたとえば、JavaScript は
値とコンテキストから変換するので、数値のみを含む文字列リテラルは
次のような数式を使用できます。
"2" * 2;
> 4
ただし、その文字列を数値値として解析できない場合、数学的 結果は数値以外になります。
"two" * 2;
> NaN
無効な値が数値として表される場合、NaN
が返されます。
表します以下に例を示します。
- コンバージョンの失敗回数(例:
parseInt( undefined )
) - 結果が実数でない算術演算(例:
0 / 0
、Math.sqrt( -10 )
) - 不確定の結果を持つ算術演算(
0 * Infinity
) - 明示的な
NaN
(NaN + 2
)またはNaN
の結果(2 * "string" / 2
)
理解度をチェックする
false
を Number()
に渡すとどうなりますか。
次の数値演算の結果は何ですか。
"Six" * 3