算術演算

データ型

数値を扱う基本データ型には次のものがあります。

型

長さ

値

byte

1バイト

整数 -128 から 127

short

2バイト

整数 -32,768 から 32,767

int

4バイト

整数 -2,147,483,648 から 2,147,483,647

long

8バイト

整数-9,223,372,036,854,775,808 から 9,223,372,036,854,775,807

float

4バイト

浮動小数点 およそ±3.40282347E+38（６桁）

double

8バイト

浮動小数点 およそ±1.79769313486231570E+308（１５桁）

基本データ型のバイト数は処理系によらず決まっています。

したがって、扱える値の範囲も決まっています。

Cでは処理系により異なる可能性がある。

演算と型変換

四則演算はCと同様に記述することができます。

計算式の中で型が混在した場合、 次の方向にのみ変換が行われます。

byte → short → int → long → float → double

代入時も同様です。

Cでは代入時のみ、逆方向の変換も行われます。(Javaでは行われない)

逆方向には変換されません。

型変換が必要なときは、キャスト演算子を使います。

例１

double a; a = 1.25 * 3 * 4;

代入文の右辺に 1.25 があるため 3 や 4 は double に変換して計算されます。

double の計算結果が double型 の変数 a に代入されます。

例２

int a; a = 1.25 * 3 * 4;

代入しようとする変数が int型 なので、doublet型 の値は代入できません。

Javaではエラーとなります。

CではOKでした。

例３

int a; a = (int)(1.25 * 3 * 4);

int型の変数に代入するには、演算結果を int に変換してやればよい。

型変換を強制するにはキャスト演算子を用います。

infinity, NaN

整数演算

０で割るとエラーになります。

演算結果が扱える範囲を超えるとオーバーフローが起こり、変な値になります。

浮動小数点演算

０で割ると infinity(無限大) になります。

演算結果が扱える範囲を超えたときも infinity(無限大) になります。

-infinity(負の無限大) もあります。

infinity を含むなどで計算できない場合に NaN(Not a Number) になることがあります。

演習

for 文を用いて n! を求めるプログラムを作成しなさい。

n! = 1 * 2 * ... * n

printf文を用いて結果を表示させること。

１箇所 だけ修正すると別の n について計算できるようにプログラムすること。

ファイル名は Lesson2.java とすること。

(1)

n = 10 の場合の n! の値を計算し、表示しなさい。

(2)

基本データ型のどれを用いると大きな n について n! の正確な値を計算できるか考え、計算できる最大の n! の値を表示しなさい。

(3)

数値を扱える基本データ型すべてについて、いくつまでの n について n! の値を計算できるか確かめなさい。