次のprogramは 12.3 + 45.6 という計算をして結果を出力します。
class Keisan { public static void main(String args[]) { System.out.println(12.3 + 45.6); } }
compileして実行してみると,
57.9と出力されます。
また,
答えは 57.9 です。と画面に出力するには,次のようにします。
class Keisan { public static void main(String args[]) { System.out.println("答えは " + (12.3 + 45.6) + " です。"); } }
ここでは「+」の記号が三つ使ってあります。真ん中の
(12.3 + 45.6)が,実際に足し算をする部分です。この結果は 57.9 ですから, この命令全体は
System.out.println("答えは " + 57.9 + " です。");と書くのと同じことになります。この 57.9 の両側の + は, 数の足し算ではなく,単に文字列をつなぎ合わせるだけです。 最終的には
System.out.println("答えは 57.9 です。");と書いたのと同じことになります。
もし間違って
System.out.println("答えは " + 12.3 + 45.6 + " です。");としてしまったら,画面には
答えは 12.345.6 です。のように,単に文字列としてつなぎ合わせたものが出てしまいます。
Javaの計算では,Cなどと同様に,
掛け算は *
,割り算は /
で表します。
また,計算の順序は以下のようになります。
( )
の中
a * b
,a / b
a + b
,a - b
注意すべき点は,整数どうしの計算なら, 答えも切り捨てて整数にされてしまうことです。 たとえば
System.out.println("答えは " + (8 / 3) + " です。");の答えは 2.666… にならず,切り捨てて 2 になってしまいます。 切り捨てられたくなければ,
System.out.println("答えは " + (8.0 / 3) + " です。");のように,どちらかの数(または両方)に小数点を付けます。
小数点の付いた非常に大きい値や非常に小さい値は,指数表示になります。 たとえば
System.out.println(3141592.65);とすると,
3.14159e+06(Solaris 2上のJDK)などと出力されます。 この3.14159e+06は の意味です。 言い換えれば,e+06は小数点を右に6個動かすことです。また
System.out.println(0.00000314159265);とすると,
3.14159e-06(Solaris 2上のJDK)と出力されます。 この3.14159e-06は の意味です。 言い換えれば,e-06は小数点を左に6個動かすことです。
次のprogramは2の平方根を計算して出力します。
class Test { public static void main(String args[]) { System.out.println("ルート2は " + Math.sqrt(2.0) + "です。"); } }
実行すると「ルート2は 1.41421 です」と画面に現れます。
Math.sqrt() が平方根を求める関数です。 これ以外にも次のようなたくさんの関数が使えます。 機種依存性をなくすため, Netlib(http://netlib.att.com)の fdlibm ライブラリの アルゴリズム(計算方法)で計算することになっています。
次のものは引数も含めすべて double 型です。 角度の単位はすべてラジアンです。
次は,引数が float 型なら返す値は int 型, 引数が double 型なら返す値は long 型です。
次の三つは, 引数が int,long,float,double の どれでもかまいません。返す値の型は引数の型と同じになります。
Java で計算に使う数値の型には,次のものがあります。
同じ 123 という数値でも,書き方によって,どの型として扱われるかが違います。
int 型どうしの計算は,答えも int 型の範囲で求められます。 int 型の最大値は 2147483647 です。これ以上になると, マイナスの値に折り返されます。たとえば
System.out.println(2147483647 + 1);を実行すると と出力されてしまいます。
これを避けるには,どちらか(または両方)を long 型にします。
System.out.println(2147483647L + 1);これなら long 型として計算されるので,2147483648 になります。
float 型と double 型の混合演算の場合も, どちらかが double であれば結果は double になります。