ためになるホームページ お問い合わせ




TOP > Java > Mathクラス
Mathクラス
java.langパッケージには、Java言語の根幹を成すクラスが定義されている。よって、java.langパッケージに含まれているクラスは自動的にインポートされる。
Mathクラスのメソッドは全て静的メソッドなので(static)、インスタンスを生成しなくても、使用できる。また円周率と自然対数の底の近似値も定義されている。
  • public final static double Math.PI・・・円周率
  • public final static double Math.E・・・自然対数の底

  • メソッド[public static long abs(long l)], メソッド[public static float abs(float f)]
    引数の絶対値を返す。ちなみに、最小のint値または、最小のlong値を受け取った時は、負数を返す。
    int型の最小値・・・Integer.MIN_VALUE
    long型の最小値・・・Long.MIN_VALUE

    abs()メソッドの例
    class Test{
        public static void main(String[] args){
            System.out.println(Math.abs(-11111111)) ;
            System.out.println(Math.abs(Integer.MIN_VALUE)) ;
            System.out.println(Math.abs(Long.MIN_VALUE)) ;
        }
    }
    
    

    メソッド[public static double ceil(double a)]
    引数の値以上で、計算上の整数と等しい、最小の (負の無限大にもっとも近い) double 値を返します。すなわち、小数点以下を切り上げるという事。

    ceil()メソッドの例
    class Test{
        public static void main(String[] args){
            System.out.println(Math.ceil(-100.3)) ;//-100.0
            System.out.println(Math.ceil(100.3)) ;//101
        }
    }
    
    

    メソッド[public static double floor(double a)]
    引数の値以下で、計算上の整数と等しい、最大の (無限大にもっとも近い) double 値を返します。すなわち、小数点以下を切り下げるという事。

    floor()メソッドの例
    class Test{
        public static void main(String[] args){
            System.out.println(Math.floor(-100.3)) ;//-101.0
            System.out.println(Math.floor(100.3)) ;//100.0
        }
    }
    
    

    メソッド[public static xxxx max(xxxx a,xxxx b)]
    2つの値を比較し、大きいほうの値を返す。同じ値同士の場合は、その値を返す。
    xxxxは、double,float,int,long。

    max()メソッドの例
    class Test{
        public static void main(String[] args){
            System.out.println(Math.max(2,3)) ;//3
            System.out.println(Math.max(299,299.999)) ;//299.999
            System.out.println(Math.max(3000,3000)) ;//3000
        }
    }
    
    

    メソッド[public static xxxx min(xxxx a,xxxx b)]
    2つの値を比較し、小さいほうの値を返す。同じ値同士の場合は、その値を返す。
    xxxxは、double,float,int,long。

    min()メソッドの例
    class Test{
        public static void main(String[] args){
            System.out.println(Math.min(2,3)) ;//2
            System.out.println(Math.min(299,299.999f)) ;//299.0
            System.out.println(Math.min(3000.0,3000)) ;//3000.0
        }
    }
    
    

    メソッド[public static double random()]
    0.0以上で、1.0より小さい正の符号の付いた double 値を返します。戻り値は、この範囲からの一様分布によって擬似乱数的に選択されます。

    random()メソッドの例
    class Test{
        public static void main(String[] args){
            for(int i = 0 ; i <10 ; i++) {
                System.out.println(Math.random()*10) ;
            }
        }
    }
    
    
    

    メソッド[public static int round(xxxx a)]
    >引数にもっとも近い long を返します。結果は 1/2 を加えて floor メソッドで取り int にキャストして整数に丸められます。すなわち、結果は次の式の値になります。四捨五入の事。
    xxxxは、double,float。

    round()メソッドの例
    class Test{
        public static void main(String[] args){
            System.out.println(Math.round(3.7)) ;
            System.out.println(Math.round(3.49999999)) ;
            System.out.println((int)Math.floor((3.7 + 0.5d))) ;
        }
    }
    
    

    メソッド[public static double sin(double a)]
    指定された角度の正弦 (サイン) を返します。正弦とは、高さ/斜辺。パラメータはラジアンで表した角度。

    sin()メソッドの例
    class Test{
        public static void main(String[] args){
            System.out.println(Math.sin(Math.toRadians(30.0))) ;
            System.out.println(Math.sin(Math.toRadians(Double.NaN))) ;//NaNが返される
        }
    }
    
    

    メソッド[public static double cos(double a)]
    指定された角度の余弦 (コサイン) を返します。余弦とは、底辺/斜辺。パラメータはラジアンで表した角度。

    cos()メソッドの例
    class Test{
        public static void main(String[] args){
            System.out.println(Math.cos(Math.toRadians(Double.NaN))) ;//NaNが返される
            System.out.println(Math.cos(Math.toRadians(1.0))) ;
        }
    }
    
    

    メソッド[public static double tan(double a)]
    指定された角度の正接 (タンジェント) を返します。余弦とは、高さ/底辺。パラメータはラジアンで表した角度。

    tan()メソッドの例
    class Test{
        public static void main(String[] args){
            System.out.println(Math.tan(Math.toRadians(Double.NaN))) ;//NaNが返される
            System.out.println(Math.tan(Math.toRadians(45.0))) ;
        }
    }
    
    

    メソッド[public static double toDegrees(double angrad)]
    ラジアンで計測した角度を、相当する度に変換します。通常、ラジアンから度への変換は正確ではありません。パラメータはラジアンで表した角度。

    toDegrees()メソッドの例
    class Test{
        public static void main(String[] args){
            System.out.println(Math.toDegrees(Math.PI * 2.0)) ;
        }
    }
    
    

    メソッド[public static double toRadians(double angdeg)]
    度で計測した角度を、相当するラジアンに変換します。通常、度からラジアンへの変換は正確ではありません。パラメータは角度。

    toDegrees()メソッドの例
    class Test{
        public static void main(String[] args){
            System.out.println(Math.toRadians(360.0)) ;
        }
    }
    
    

    メソッド[public static double sqrt(double a)]
    double 値の正しく丸めた正の平方根を返します。

    sqrt()メソッドの例
    class Test{
        public static void main(String[] args){
            System.out.println(Math.sqrt(16.0)) ;
        }
    }
    
    

    Mathクラスの特殊なケース

    特殊なケースの例
    class Test{
        public static void main(String[] args){
            double d ;
            //「NEGATIVE_INFINITY」負の無限大値を保持する定数
            double d1 = Double.NEGATIVE_INFINITY ;
            // 「POSITIVE_INFINITY」正の無限大値を保持する定数
            float f1 = Float.POSITIVE_INFINITY ;
            //NaNは非数。0で除算するなど、特別な演算の結果を表す
            double notnum = Double.NaN ;
    
            //非数NaNは何と(自分自身と)比較しても、「==」しくならない。
            if(notnum != notnum){
                System.out.println("NaNs not equal") ;
            }
    
            //public static boolean isNaN(double v)
            //指定された数値が非数 (NaN) である場合には true を、
            //そうでない場合は false を返します。
            //DoubleとFloatのみのメソッド
            if(Double.isNaN(notnum)){
                System.out.println("notnum is NaN") ;
            }
            //負の無限大の平方根?
            //引数が NaN またはゼロより小さい場合、NaN が返されます
            d = Math.sqrt(d1) ;
    
            if(Double.isNaN(d)){
                System.out.println("d = NaN") ;
            }
    
            //負の数の平方根なので、NaNが返される。
            System.out.println(Math.sqrt(-16d)) ;
    
            //正のfloat double型を0で除算すると、正のINFINITY
            //ちなみにその他の型を0で除算すると、ランタイムエラー
            //ArithmeticExCeptionが起こる
            System.out.println(16d/0) ;
    
            //負のfloat double型を0で除算すると、負のINFINITY
            //ちなみにその他の型を0で除算すると、
            //ArithmeticExCeptionが起こる
            System.out.println(-16d/0) ;
    
            //負の0正の0の時は、正の0を返す
            System.out.println("abs(-0) = " + Math.abs(-0)) ;
        }
    }
    
    






    Copyright 2007 ためになるホームページ All Rights Reserved.