「JavaScript/数値」の版間の差分

削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
M →‎整数と浮動小数点数: グローバルな isInteger() isSafeInteger() は存在しなかった。
Ef3 (トーク | 投稿記録)
リテラルと定数は違う。
4 行
JavaScriptでは整数と浮動小数点数がサポートされています。浮動小数点数とは実数のコンピュータによる近似です。IEEE754の倍精度64ビットが使われます。
 
プログラミング言語における整数の書き方を'''整数リテラル'''(せいすうリテラル、''integer literal'')、浮動小数点数の書き方を'''浮動小数点リテラル'''(ふどうしょうすうてんリテラル、''floating point literal'')といいます。<!-- '''リテラル''' (''literal'') とは文字通り、文字のことを意味しますが、[[JavaScript/var|変数]]に対して定数のことであると捉えることもできます。
 
ES6 で定数が const として仕様化された。また、リテラルと定数は明確に違う概念 -->
 
=== 整数 ===
24 ⟶ 26行目:
二進法の整数リテラルは <code>0b</code>(あるいは<code>0B</code>)を前置し、八進法の整数リテラルは<code>0o</code>(あるいは<code>0o</code>)を前置します<ref> [https://www.ecma-international.org/ecma-262/6.0/#sec-literals-numeric-literals ECMA-262 6th Edition 11.8.3 Numeric Literals]</ref>。
<code>0</code>だけを前置する八進法の整数リテラルは過去にサポートされていましたがECMA-262第3版で削除されました。多くの処理系では後方互換のために依然として八進法の整数リテラルをサポートしていますが、非推奨とされています。
 
数値リテラルに区切り文字としての '_' 使う形式が、ECMA-262第6版で導入されました。
 
* <code>1_234_567</code>
* <code>2_3_5_7_11</code>
 
使うかどうかは任意で、3桁ごとに置くなどの制限はありません。
数値の、先頭に '_' を置くと識別子になってしまいます。
数値の末尾に '_' を置くと SysnatxError となります。
 
=== 浮動小数 ===
37 ⟶ 48行目:
 
== 整数と浮動小数点数 ==
JavaScriptにおいて、32ビット符号なし整数・32ビット符号付き整数・64ビット浮動小数が1つの数値にまとめられています。C言語などとは異なり、整数同士の演算で32ビットで表現できる範囲を超えた場合は、64ビット浮動小数に自動的に切り替わります。<!-- XXX -->
 
typeof 演算子のような手法で、この3種のうちどれが使われているかを判定する演算子は存在しません。しかしながら、ビット演算子を使うことにより、64ビット浮動小数を32ビット符号なし整数や32ビット符号付き整数に変換できます。具体的には、>>> 演算子により、32ビット符号なし整数になり、その他のビット演算子により、32ビット符号付き整数に変換されます。64ビット浮動小数は53ビット符号付き整数を誤差なく表現できるため、32ビット符号なし整数や32ビット符号付き整数を意図的に64ビット浮動小数に切り替える方法は JavaScript の言語仕様には存在しません。
64 ⟶ 75行目:
=== NaN ===
: ''「[[JavaScript/NaN|NaN]]」も参照''
'''NaN'''(ナン、'''''N'''ot '''a''' '''N'''umber''、非数、ひすう)とは、数値演算に不正なパラメータが与えられたり、計算結果が一意に定まらないことなど異常を表す特殊な値で、[[w:IEEE 754|IEEE 754]]の NaN への JavaScript インターフェースです。
 
=== Number ===
93 ⟶ 104行目:
 
==== プロパティ ====
*; [[{{PAGENAME}}/MAX_VALUE|MAX_VALUE]]
: JavaScriptで表すことのできる最大の数
*; [[{{PAGENAME}}/MIN_VALUE|MIN_VALUE]]
: JavaScriptで表すことのできる最小の数
*; [[JavaScript/NaN|NaN]]
: 非数
*; [[{{PAGENAME}}/NEGATIVE_INFINITY|NEGATIVE_INFINITY]]
: 負の無限大
*; [[{{PAGENAME}}/POSITIVE_INFINITY|POSITIVE_INFINITY]]
: 正の無限大 ([[JavaScript/Infinity|Infinity]])
*; [[{{PAGENAME}}/prototype|prototype]]
: Numberオブジェクトのプロトタイプ