1. 算術演算子
(1)算術演算子は,四則演算の足し算(+),引き算(−),掛け算(×),割り算(÷)を行うものですが,コンピュータ上では,これらは半角(1バイト)文字の + - * / で表されます.
【例1.1】
document.write(1+2); ⇒ 3 が表示される
【例1.2】
aa1 = 2+3;
document.write(aa1); ⇒ 5 が表示される
【例2.1】
document.write(3-4); ⇒ -1 が表示される
【例2.2】
nn1 = 57-31;
document.write(nn1); ⇒ 26 が表示される
【例3.1】
document.write(5*6); ⇒ 30 が表示される
【例3.2】
mm1 = 0.125 * 3;
document.write(mm1); ⇒ 0.375 が表示される
【例4.1】
document.write(3/5); ⇒ 0.6 が表示される
【例4.2】
kk1 = 5 / 7;
document.write(kk1); ⇒ 0.7142857142857143 が表示される(※割り切れないときは,小数第16けた付近で四捨五入された結果が表示される.)
(2)足し算,引き算,掛け算,割り算が混じっている計算では,掛け算,割り算が先に行われる.掛け算と割り算,足し算と引き算は同順位です
【例5.1】
xx1 = 1 * 2 + 3 / 4
document.write(xx1); ⇒ 2.75 が表示される
※ 2 + 0.75 の計算になる
【例5.2】
xx1 = 3 / 4 / 5
document.write(xx1); ⇒ 0.15 が表示される
※ 3 / 4= 0.75 , 0.75 / 5 = 0.15 になる
(3)かっこ ( ) の中は先に計算されます.算数・数学では小かっこ( ),中かっこ { },大かっこ [ ]などと区別するが,javascriptでは ( ) だけを使い,何重に使ってもよい.
( ) を何重にも使うときは,かっこの始まり ( とかっこの終り ) が対となって同じ数だけなければならない.
【例6.1】
pp1 = 3 / (4 * 5);
document.write(pp1); ⇒ 0.15 が表示される
※かっこを使わずに,【例5.2】のように書くのと同じ
【例6.2】
pp1 = ((2+1)*2+1)*2+1;
document.write(pp1); ⇒ 15 が表示される
※((3*2+1)*2+1)=7*2+1=15になる.

(4)+演算子の危険な落とし穴
 他の多くのプログラミング言語では,変数を使う前に一番最初に変数の型宣言を行います.これにより,その変数に割り当てられるメモリのサイズやその変数に格納されるデータの型が決まります.
C言語での例
int a = 10; ←2バイトを確保して-32768〜32767までの符号付整数を格納できる.
float x = 0.5;←4バイトを確保して浮動小数点数を格納できる.
Visual Basicでの例
Dim work As String←workという変数を文字列型として使う
Dim tmp As Integer←tmpという変数を整数型として使う
 これに対して,javascriptでは「変数の型宣言をしなくても」「他の命令文を実行した後からでも」,変数を定義して使うことができます.
 この「便利さ」「ゆるやかさ」が逆に,最も簡単な「+という演算子の危険な落とし穴」につながります.
 すなわち,javascriptでは「文字列の結合」にも「数値としての足し算」にも同じ演算子(+)を使うので,1つでも文字列が含まれている場合には,文字列の結合として処理されます.
【文字列の結合】
'ab'+'cd'→'abcd'になる
'1'+'1'→'11'になる
'2'+3 →'23'になる

【数値としての足し算】
1+1 → 2になる
2+3 → 5になる
 javascriptは,プログラマーに甘く,少々のミスはカバーしてくれる「便利さ」「ゆるやかさ」がありますが,少なくとも一方が文字列であるときのプラスの演算だけは必ず文字列の結合と解釈される.
数字と見なせるものは
数字として計算されるもの
文字列として計算されるもの
@
許されない
D
str1 = '12' + '3';
document.write(str1);
⇒ 123
A
str1 = '12' - '3';
document.write(str1);
⇒ 9
E
str1 = 'ab' - 'b';
document.write(str1);
⇒ Nan(Not a Number)
文字列に引き算はないから,「数字でないものを引き算に使った」というエラーメッセージが出る
B
str1 = '12' * '3';
document.write(str1);
⇒ 36
F
str1 = 'ab' * 'b';
document.write(str1);
⇒ Nan(Not a Number)
文字列に掛け算はないから,「数字でないものを掛け算に使った」というエラーメッセージが出る
C
str1 = '12' / '3';
document.write(str1);
⇒ 4
G
str1 = 'ab' / 'b';
document.write(str1);
⇒ Nan(Not a Number)
文字列に割り算はないから,「数字でないものを割り算に使った」というエラーメッセージが出る

【+の落とし穴からの逃げ方】
xx1=
xx2=
 右のように読者が空欄に入力した値を使う場合など,データの型が数値になるか文字列になるか決まらない場合に,「プラス(+)の演算を含む処理をしたいとき」
(ア) 必ず文字列として使いたいとき
xx1+''+xx2 のように空文字''を追加して1つを文字列にすると全部が文字列結合の演算になる.
(イ) 必ず数値として使いたいとき
xx1*1 + xx2*1,xx1/1 + xx2/1 のように掛け算,割り算を付ける.
この場合,上記のEFGのように数字でないものが含まれていれば,NaNとして処理される.
Dの代わりに,str1 = '12'*1 + '3'*1;やstr1 = '12'/1 + '3'/1;とすると15になる

(参考)
 BASIC系など他のプログラミング言語には累乗をカレット(^)で表すものもありますが,C言語やjavascriptには累乗を表す「演算子」はありません
 ビルドイン・オブジェクトには,Math.pow()というメソッド(関数)があります.…累乗(power)の先頭3文字をとったものでしょう.Math.pow(底, 指数)の形で使えます.[底は実数,指数も実数]
【例7.1】
nn1 = Math.pow(2, 3);
document.write(nn1);
によりが計算でき,結果として8になります.
【例7.2】
nn1 = Math.pow(2, 1/2);
document.write(nn1);
によりが計算でき,結果として1.4142135623730951になります.
【例7.3】
nn1 = Math.pow(0.99, 1.01);
document.write(nn1);
によりが計算でき,結果として0.9899005066748408になります.
 しかし,この教材の作者は,このpow()関数をめったに使いません.指数が正の整数の場合は,次のように * を繰り返せばよいからです.
【例8.1】
nn1 = 2 * 2 * 2;
document.write(nn1);
によりが計算でき,結果として8になります.
【例8.2】
nn1 = 1;
for(kk1 = 0; kk1 <10; kk1++)
nn1 *= 2;←2を10回掛ける
document.write(nn1);
によりが計算でき,結果として1024になります.

【演習】javascriptを使って,次の計算を行い,計算結果を画面上に表示してください.
(けた数が多いとき,通貨などでは3けたごとにカンマで区切る書き方をしますが,プログラム上では小数点以外の区切り記号は使わないようにしてください.カンマで区切ると全く別のものになります.)
(1)13579+48206
(2)123456-18276
(3)9631*8642
(4)7711/31
解答を見る
例えば,分数のは割り算に直すなどして,次の計算を行い,計算結果を画面に表示してください.(割り切れないときは,小数表示のままでよい)
(5)
(6)
(7)
(8)
解答を見る

 javascriptを使って,次の計算を行い,計算結果を画面上に表示してください.
(9)
(10)
(11)
(12)
解答を見る