1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
|
---
title: Number
slug: Web/JavaScript/Reference/Global_Objects/Number
tags:
- JavaScript
- Number
- Reference
translation_of: Web/JavaScript/Reference/Global_Objects/Number
---
<div>{{JSRef}}</div>
<p><strong><code>Number</code></strong> は<a href="/ja/docs/Glossary/Primitive#Primitive_wrapper_objects_in_JavaScript">プリミティブラッパーオブジェクト</a>で、 <code>37</code> や <code>-9.25</code> のような数値を表現したり操作したりするために使用されます。</p>
<p><strong><code>Number</code></strong> コンストラクターは、数値を扱うための定数とメソッドを含んでいます。他の型の値は <strong><code>Number()</code> 関数</strong>を用いて数値に変換することができます。</p>
<p>JavaScript の <strong>Number</strong> 型は <a href="https://ja.wikipedia.org/wiki/%E6%B5%AE%E5%8B%95%E5%B0%8F%E6%95%B0%E7%82%B9%E6%95%B0">IEEE 754 の倍精度 64ビットバイナリ形式</a>であり、 Java や C# の <code>double</code> のようなものです。これは小数点以下の数値を表すことができることを意味しますが、格納できる値にはいくつかの制限があります。 Number は小数点以下約17桁の精度しか保持できません。演算は<a href="https://en.wikipedia.org/wiki/Floating-point_arithmetic#Representable_numbers,_conversion_and_rounding">丸め誤差</a>の影響を受けます。 Number が保持できる最大の値は約1.8×10<sup>308</sup>です。それ以上の数値は、特殊な数値定数 {{jsxref("Infinity")}} に置き換えられます。</p>
<p>JavaScript コードにおける <code>37</code> のような数値リテラルは浮動小数点値であり、整数ではありません。日常的に使用される独立した整数型はありません。 (JavaScript は {{jsxref("BigInt")}} 型を持つようになりましたが、日常の利用で Number を置き換えるように設計されてはいません。 <code>37</code> は Number であり、 BigInt ではありません。)</p>
<h2 id="Description" name="Description">解説</h2>
<p>関数として使用された場合、 <code>Number(value)</code> は文字列やその他の値を Number 型に変換します。値が変換できない場合は、 {{jsxref("NaN")}} を返します。</p>
<h3 id="Literal_syntax" name="Literal_syntax">リテラル構文</h3>
<pre class="brush: js notranslate">123 // 百二十三
123.0 // 同じ
123 === 123.0 // true</pre>
<h3 id="Function_syntax" name="Function_syntax">関数構文</h3>
<pre class="brush: js notranslate">Number('123') // 数値 123 を返す
Number('123') === 123 // true
Number("unicorn") // NaN
Number(undefined) // NaN
</pre>
<h2 id="Constructor" name="Constructor">コンストラクター</h2>
<dl>
<dt>{{jsxref("Number/Number", "Number()")}}</dt>
<dd>新しい <code>Number</code> 値を生成します。</dd>
</dl>
<h2 id="Static_properties" name="Static_properties">静的プロパティ</h2>
<dl>
<dt>{{jsxref("Number.EPSILON")}}</dt>
<dd>数値として表される 2 個の数の最小の差です。</dd>
<dt>{{jsxref("Number.MAX_SAFE_INTEGER")}}</dt>
<dd>JavaScript における確実な整数の最大値 (<code>2<sup>53</sup> - 1</code>) です。</dd>
<dt>{{jsxref("Number.MAX_VALUE")}}</dt>
<dd>表現可能な正の数の最大値です。</dd>
<dt>{{jsxref("Number.MIN_SAFE_INTEGER")}}</dt>
<dd>JavaScript における確実な整数の最小値 (<code>-(2<sup>53</sup> - 1)</code>) です。</dd>
<dt>{{jsxref("Number.MIN_VALUE")}}</dt>
<dd>表現可能な正の数の最小値。0 に最も近い正の数です (0 ではありません)。</dd>
<dt>{{jsxref("Number.NaN")}}</dt>
<dd>特殊な "<strong>N</strong>ot <strong>a</strong> <strong>N</strong>umber" (数値ではない) の値です。</dd>
<dt>{{jsxref("Number.NEGATIVE_INFINITY")}}</dt>
<dd>負の無限大を表す特別な値です。オーバーフロー時に返されます。</dd>
<dt>{{jsxref("Number.POSITIVE_INFINITY")}}</dt>
<dd>無限大を表す特別な値です。オーバーフロー時に返されます。</dd>
<dt>{{jsxref("Number.prototype")}}</dt>
<dd><code>Number</code> オブジェクトへのプロパティの追加を許可します。</dd>
</dl>
<h2 id="Static_methods" name="Static_methods">静的メソッド</h2>
<dl>
<dt>{{jsxref("Number.isNaN()")}}</dt>
<dd>渡された値が <code>NaN</code> であれば <code>true</code> を返します。</dd>
<dt>{{jsxref("Number.isFinite()")}}</dt>
<dd>渡された値が有限数であるかどうかを判断します。</dd>
<dt>{{jsxref("Number.isInteger()")}}</dt>
<dd>渡された値が整数であるかどうかを判断します。</dd>
<dt>{{jsxref("Number.isSafeInteger()")}}</dt>
<dd>渡された値が確実な範囲の整数 (<code>-(2<sup>53</sup> - 1)</code> から <code>2<sup>53</sup> - 1</code> の間) であれば <code>true</code> を返します。</dd>
<dt>{{jsxref("Number.parseFloat()", "Number.parseFloat(<var>string</var>)")}}</dt>
<dd>値はグローバルオブジェクトの {{jsxref("parseFloat", "parseFloat()")}} と同じです。</dd>
<dt>{{jsxref("Number.parseInt()", "Number.parseInt(<var>string</var>, [<var>radix</var>])")}}</dt>
<dd>値はグローバルオブジェクトの {{jsxref("parseInt", "parseInt()")}} と同じです。</dd>
</dl>
<h2 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h2>
<dl>
<dt>{{jsxref("Number.prototype.toExponential()" ,"Number.prototype.toExponential(<var>fractionDigits</var>)")}}</dt>
<dd>指数表記で数値を表す文字列を返します。</dd>
<dt>{{jsxref("Number.prototype.toFixed()", "Number.prototype.toFixed(<var>digits</var>)")}}</dt>
<dd>固定小数点表記で数値を表す文字列を返します。</dd>
<dt>{{jsxref("Number.prototype.toLocaleString()", "Number.prototype.toLocaleString([<var>locales</var> [, <var>options</var>]])")}}</dt>
<dd>この値を言語依存の表現で表した文字列を返します。 {{jsxref("Object.prototype.toLocaleString()")}} メソッドを上書きします。</dd>
<dt>{{jsxref("Number.prototype.toPrecision()", "Number.prototype.toPrecision(<var>precision</var>)")}}</dt>
<dd>指定された精度で、固定小数点表記または指数表記で数値で表す文字列を返します。</dd>
<dt>{{jsxref("Number.prototype.toString()", "Number.prototype.toString([<var>radix</var>])")}}</dt>
<dd>指定された基数を元に、指定されたオブジェクトを表す文字列を返します。 {{jsxref("Object.prototype.toString()")}} メソッドを上書きします。</dd>
<dt>{{jsxref("Number.prototype.valueOf()")}}</dt>
<dd>指定されたオブジェクトのプリミティブ値を返します。 {{jsxref("Object.prototype.valueOf()")}} メソッドを上書きします。</dd>
</dl>
<h2 id="Examples" name="Examples">例</h2>
<h3 id="Using_the_Number_object_to_assign_values_to_numeric_variables" name="Using_the_Number_object_to_assign_values_to_numeric_variables">Number オブジェクトを使用して変数に値を代入する</h3>
<p>以下の例では、<code>Number</code> オブジェクトのプロパティを使用して、いくつかの数の変数に値を代入します。</p>
<pre class="brush: js notranslate">const biggestNum = Number.MAX_VALUE
const smallestNum = Number.MIN_VALUE
const infiniteNum = Number.POSITIVE_INFINITY
const negInfiniteNum = Number.NEGATIVE_INFINITY
const notANum = Number.NaN
</pre>
<h3 id="Integer_range_for_Number" name="Integer_range_for_Number">Number の整数の範囲</h3>
<p>次の例は、<code>Number</code> オブジェクトで表現可能な最小の整数値と最大の整数値です (詳細は、ECMAScript 標準の <em><a href="https://tc39.github.io/ecma262/#sec-ecmascript-language-types-number-type">6.1.6 The Number Type</a></em> の章を参照してください)。</p>
<pre class="brush: js notranslate">const biggestInt = Number.MAX_SAFE_INTEGER // (<code>2<sup>53</sup> - 1</code>) => 9007199254740991
const smallestInt = Number.MIN_SAFE_INTEGER // -(<code>2<sup>53</sup> - 1</code>) => -9007199254740991</pre>
<p>JSON にシリアライズされたデータを解析する場合、整数値がこの範囲を超えていると、 JSON パーサーがこの値を <code>Number</code> 型に変換したときに信頼できない値になります。</p>
<p>可能な回避策として、代わりに {{jsxref("String")}} を使用してください。</p>
<p>大きい数値は {{jsxref("BigInt")}} 型を用いて表すことができます。</p>
<h3 id="Using_Number_to_convert_a_Date_object" name="Using_Number_to_convert_a_Date_object">Number を使用して Date オブジェクトを変換する</h3>
<p>以下の例は、 <code>Number</code> を関数として用いて、{{jsxref("Date")}} オブジェクトを数値に変換します:</p>
<pre class="brush: js notranslate">let d = new Date('December 17, 1995 03:24:00')
console.log(Number(d))
</pre>
<p>これは、コンソールに "819199440000" を出力します。</p>
<h3 id="Convert_numeric_strings_and_null_to_numbers" name="Convert_numeric_strings_and_null_to_numbers">数字や null を数値に変換する</h3>
<pre class="brush: js notranslate" dir="rtl">Number('123') // 123
Number('123') === 123 /// true
Number('12.3') // 12.3
Number('12.00') // 12
Number('123e-1') // 12.3
Number('') // 0
Number(null) // 0
Number('0x11') // 17
Number('0b11') // 3
Number('0o11') // 9
Number('foo') // NaN
Number('100a') // NaN
Number('-Infinity') //-Infinity</pre>
<h2 id="Specifications" name="Specifications">仕様書</h2>
<table class="standard-table">
<thead>
<tr>
<th scope="col">仕様書</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{SpecName('ESDraft', '#sec-number-objects', 'Number')}}</td>
</tr>
</tbody>
</table>
<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
<p>{{Compat("javascript.builtins.Number")}}</p>
<h2 id="See_also" name="See_also">関連情報</h2>
<ul>
<li>{{jsxref("NaN")}}</li>
<li>{{jsxref("Arithmetic operators")}}</li>
<li>{{jsxref("Math")}} グローバルオブジェクト</li>
<li>任意の精度の整数型: {{jsxref("BigInt")}}</li>
</ul>
|