加算/プラス記号

JavaScriptで加算(足し算)を行うには+(プラス)記号を使います。例えば7に3を加算する場合には以下のように記述します。(サンプル01を実行する)

7+3

0と値を加算する場合には0を省略して+5のように記述することができます。0は省略できるので以下のように記述してもエラーにはならずに正しい結果(-5)を返します(0+0-0+0-0+0-5と同じことになります)。(サンプル02を実行する)

+-+-+-5

多くの数を加算する場合には+記号を続けて記述します。例えば10と4と2と1を加算する場合には以下のように記述します。(サンプル03を実行する)

10+4+2+1

+の前後に半角の空白やタブが入っていても問題なく動作します。半角空白ではなく全角空白を入れた場合にはブラウザによって動作が異なります(サンプル04を実行する)。Windows版のInternet ExplorerやOpera、Firefoxでは全角空白も半角空白と同様に扱われるため、正しい計算結果が返されます。これ以外のブラウザ、例えばMacOS X版のSafari 2やInternet Explorer 5ではエラーになります。ごく稀に気づかずに全角空白が入ってしまい、自分が使用しているブラウザ以外でエラーになってしまう場合には、このような部分も再確認してみてください。

JavaScriptでは数値は整数だけでなく小数値も扱うことができます。小数値を扱う場合でも、特に数値の前後に記号を付けたり変換するためのメソッドを使用する必要はありません。例えば12.34に0.5を加算する場合には以下のように記述します。(サンプル05を実行する)

12.34+0.5

小数値を使用する場合には演算誤差には注意が必要です。多くのブラウザでは内部での数値表現がBCD (Binary Code Decimal) ではなく2nまたは2-nで表現されるため、計算結果が正しい値にならないことがあります。例えば0.1を10回足すと1になるはずですが、多くのブラウザでは0.9999999999999999のように異なる結果(近似値)になってしまいます。例外的に内部演算をBCDで行っているMac版のiCabでは、このような演算誤差は生じません。(サンプル06を実行する)
小数値での演算誤差を防ぐには、10倍してから演算し、その後に10で除算するという方法を利用します(これはゲタを履かせるとも言われます)。0.1を10回足す場合には以下のように10倍してから最後に10で除算します(有効桁数分だけゲタを履かせればよい)。(サンプル07を実行する)

(1+1+1+1+1+1+1+1+1+1)/10

一般的なプログラム言語では文字列と数値を加算することはできませんが、JavaScriptでは自動的に型変換が行われ計算結果が返されます。ただし、型変換は数値→文字列になるため数値の合計ではなく文字列として連結された結果が返されます。これは加算するもの同士の一方が文字列であれば強制的に文字列に変換し処理されます。(サンプル08を実行する)

"10"+9 → 109となる
6+"2" → 62となる

変数との加算でも、どちらか一方が文字列であれば同様に文字列として加算されます。実際には、このようなことが発生すると困る場合があります。そのため、JavaScriptでは文字列から数値に変換するためのメソッドが用意されています。小数値として変換したい場合にはparseFloat()を使います。一般的には、このparseFloat()で問題ないでしょう。以下の例では12.34に0.5を加算することになります。(サンプル09を実行する)

parseFloat("12.34")+0.5

小数値でなく整数値に変換したい場合にはparseInt()を使います。以下の例では文字列である"12.34"を整数値に変換し0.5を加算します。12.34は12に変換された後に0.5が加算されるので結果は12.5となります。(サンプル10を実行する)

parseInt("12.34")+0.5

parseInt()は他の用途にも使用することができます。parseInt()は数値以外の文字が出現すると、そこで解析を終了し、その時点までで得られた値を返します。つまり文字列内に数値以外の文字が入っていてもエラーになりません。これを利用するとスタイルシートでの単位付きの値から単位だけを取り除くことができます。以下の例では320pxという単位付きの値がparseInt()によって変換され320となります。(サンプル11を実行する)

parseInt("320px")

文字列と数値でなく変数やプロパティ値での加算でもここまで説明した場合と同様の処理が行われます。また、+記号での数値演算が不可能な場合にはJavaScriptはエラーを返さずに、NaN (Not a Number) を返します。(サンプル12を実行する)
JavaScriptでは最大値/最小値、無限大の値、負の無限大の値を扱うことができますが、これらとの加算も可能です。ただし、無限大に値を加算しても結果は無限大 (Infinity) になります。同様に負の無限大に値を加算しても結果は負の無限大のままになります。(サンプル13を実行する)

また、JavaScriptが扱えるのは実数のみで虚数(i)は扱うことができません。虚数が扱えないので複素数も扱うことはできません。

最終更新日:2007年1月4日

>目次に戻る