Numbers

数値の値は、次のように一連の数字で構成されます。

5

数値データ型には、特別なグローバル プロパティもいくつか含まれており、 数値の概念を表します(InfinityNaN など)。値の意味を表します。 "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^10242^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 / 0Math.sqrt( -10 )
  • 不確定の結果を持つ算術演算(0 * Infinity
  • 明示的な NaNNaN + 2)または NaN の結果(2 * "string" / 2

理解度をチェックする

falseNumber() に渡すとどうなりますか。

0
False
1
NaN

次の数値演算の結果は何ですか。

"Six" * 3

正しい
NaN
2
18
0