「JavaScript/数値」の版間の差分
削除された内容 追加された内容
M編集の要約なし タグ: ビジュアルエディター モバイル編集 モバイルウェブ編集 |
+Infinity |
||
1 行
{{Nav}}
'''数値'''(すうち、''number'')
[[JavaScript/Number|Numberオブジェクト]]は数値プリミティブ == 概要 ==
JavaScriptでは数
浮動小数点数とは === 数値リテラル ===
<source lang="js">
42
42.0 // 上と同じ値
-1
0
864e5
0xFFFF
</source>
<code>864e5</code>というのは科学的表記法で<math>864 \times 10^5</math>(<math>= 8.64 \times 10^7</math>)、すなわち<code>86400000</code>に等しい数値です。
<code>0xFFFF</code>というのは十六進法による表示で、十進法の<code>65535</code>に等しい数値です。
JavaScriptにおいて<code>0xFFFF</code>と<code>65535</code>はまったく同じ数値です。
JavaScriptには二進法や八進法の整数リテラルはありませんでしたが、ECMA-262第6版で導入されました。
<source lang="js">
0b1101 // 13
0o3162 // 1650
</source>
二進法の整数リテラルは <code>0b</code>(あるいは<code>0B</code>)を前置し、八進法の整数リテラルは<code>0o</code>(あるいは<code>0o</code>)を前置します<ref> [https://www.ecma-international.org/ecma-262/#sec-literals-numeric-literals ECMA-262 6th Edition 11.8.3 Numeric Literals]</ref>。
<code>0</code>だけを前置する八進法の整数リテラルは過去にサポートされていましたがECMA-262第3版で削除されました。多くの処理系では後方互換のために依然として八進法の整数リテラルをサポートしていますが、非推奨とされ
数値リテラルに区切り文字としての '_' 使う形式が、ES2021で導入されました<ref>[https://github.com/tc39/proposal-numeric-separator tc39/proposal-numeric-separator: A proposal to add numeric literal separators in JavaScript.]</ref>。
<source lang="js">
1_234_567
2_3_5_7_11
</source>
使うかどうかは任意で、3桁ごとに置くなどの制限はありません。
数値の、先頭に '_' を置くと識別子になってしまいます。
数値の末尾に '_' を置くと SysnatxError となります。
'_' を2つ以上続けても SysnatxError となります。
<source lang="js">
0.5
▲一方、浮動小数点リテラルは次のような形をしています。
.5 // 上と同じ値
1.0e-8
▲* <code>-1.4142135623730951</code>
</source>
▲* <code>3.141592653589793</code>
<code>1.0e-8</code>は<math>1.0 \times 10^{-8}</math>、すなわち<code>0.00000001</code>と等しい数値です。
小数点を伴った数値リテラルは、10進数に限られそれ以外の基数で小数点をつもなうと Syntax Error になります。
== 整数と浮動小数点数は区別されない ==
JavaScriptの数値は [[w:IEEE 754|IEEE 754]] の[[w:倍精度浮動小数点数|64ビット倍精度浮動小数点数]]です。
64ビット倍精度浮動小数点数で精度が落ちることなく整数を表現できる最小値と最大値は、それぞれ [[JavaScript/Number|Number]].MIN_SAFE_INTEGER と Number.MAX_SAFE_INTEGER で提供されます。
typeof 演算子を数値に適用すると値に関係なく "number" を返します。
数値が(精度が失われているにしても)整数であるかは Number.isInteger(number)で、精度を失っていない整数であるかは Number.isSafeInteger(number) で調べることが出来ます。
60 ⟶ 66行目:
しかし JavaScript の数は倍精度の64ビットの浮動小数しかなく整数型は浮動小数の仮数部を使って表現されます。
これはプリミティブな「数値」の場合で、BigIntやTypedArrayは異なる内部構造を持っています。}}
==
=== NaN ===
'''NaN'''(ナン、'''''N'''ot '''a''' '''N'''umber''、非数、ひすう)とは、数値に変換できない文字列を数値に変換しようとしたり、数値演算に不正なパラメータが与えられ
===
{{See
'''Infinity'''(インフィニティ、無限大、むげんだい)とは、典型的には演算結果がオーバーフローした時に取る値で、セロ除算でも生成されます。
[[w:IEEE 754|IEEE 754]]の Infinity へのインターフェースで、グローバルオブジェクトの静的プロパティ Infinity として参照できます。
=== Numberオブジェクト ===
{{See|[[JavaScript/Number|Number]]}}
'''Number'''オブジェクトはJavaScriptのプリミティブ型である数値型をラップします。Numberコンストラクタに数値として解釈できないオブジェクト(たとえば <code>"A"</code> などの文字列)を渡すと、<code>NaN</code>を返します。
94 ⟶ 105行目:
<source lang="javascript">var two = Number("2");</source>
==== 静的プロパティ ====
{{See|[[JavaScript/Number#静的プロパティ|Number#静的プロパティ]]}}
; [[{{PAGENAME}}/MAX_VALUE|MAX_VALUE]]
: JavaScriptで表すことのできる最大の数
108 ⟶ 121行目:
: Numberオブジェクトのプロトタイプ
==== 静的メソッド ====
{{See|[[JavaScript/Number|Number#静的メソッド]]}}
; toExponential(fractionDigits=undefined)
; toFixed(digits=0)
|