小数点以下の計算する

C:\DATA\Java2\Dos>java Float
val= 30/8:   3
dval= 30/8:   3.0
dval= 30.0/8.0:   3.75
dval= (double)d1/(double)d2:   3.75
 -- Press any key to exit (Input "c" to continue) --
小数点以下まで計算して印字します。

前田稔の超初心者のプログラム入門

プログラムの作成

  1. メモ帳などでタイプして Float.java の名前で保存して下さい。
    class Float
    {   public static void main(String args[])
        {   int     val;
            int     d1,d2;
            double  dval;
            d1= 30;
            d2= 8;
            val= 30/8;
            System.out.println("val= 30/8:   " + val);
            //val= 30.0/8.0;
            //System.out.println("val= 30.0/8.0:   " + val);
            dval= 30/8;
            System.out.println("dval= 30/8:   " + dval);
            dval= 30.0/8.0;
            System.out.println("dval= 30.0/8.0:   " + dval);
            dval= (double)d1/(double)d2;
            System.out.println("dval= (double)d1/(double)d2:   " + dval);
        }
    }
    
  2. Float.java をコンパイルして class オブジェクトを実行して下さい。
    コンパイルの詳細は Java を動かす を参照して下さい。
  3. ページ先頭の画面が表示されたら完成です。

プログラムの説明

  1. int 型は整数値しか格納できず、小数点以下は切り捨てられます。
    小数点以下を計算する場合は double 型を使います。
        val= 30/8;
        System.out.println("val= 30/8:   " + val);
        
  2. int 型に小数点以下の値を格納しようとすると、次のエラーメッセージが表示されます。
    「Float.java:12: 精度が落ちている可能性」
    30 は int 型の定数で 30.0 は double 型の定数です。
        val= 30.0/8.0;
        System.out.println("val= 30.0/8.0:   " + val);
        
  3. 受け取り側の変数が double 型でも、右辺の計算式が int 型なので少数以下が切り捨てられます。
        dval= 30/8;
        System.out.println("dval= 30/8:   " + dval);
        
  4. 小数点以下まで計算して印字する正しいソースコードです。
        dval= 30.0/8.0;
        System.out.println("dval= (double)d1/(double)d2:   " + dval);
        

【演習】

課題1

肥満度の計算−1
あなたの肥満度を計算して下さい。
 ・標準体重=(身長−100)*0.9
 ・肥満度 =(実測体重−標準体重)/標準体重*100
この方法では、身長の高い肥満者を正常と判定しやすく、逆に身長の低い正常者については肥満と 判定してしまいがちです。

課題2

肥満度の計算−2
日本肥満学会は国際的に用いられている肥満の判定法である体格指数(Body Mass Index = BMI)による 肥満の判定を提言しています。
 ・BMI=体重Kg/身長m/身長m
 ・BMIの標準値は22で、26以上は明かな肥満、18以下は明かなやせです。
 ・成人に至っては、22±2の範囲を維持することが望まれます。

超初心者のプログラム入門(Java2)