2013年9月16日月曜日

同値比較

とりあえず in Java
許容値はでっちあげなので、要調整
public class Main{
    private static final double ABS_TOLERANCE = 2.2204460492503131E-14; // absolute tolerance
    private static final double REL_TOLERANCE = 1E-13;                  // relative tolerance

    static public boolean equals(double a, double b){
        double abs_diff = Math.abs(a - b);
        if(abs_diff <= ABS_TOLERANCE)
            return true;
        if(abs_diff <= REL_TOLERANCE * Math.max(Math.abs(a), Math.abs(b)))
            return true;
        return false;
    }

    static public int compare(double a, double b){
        if(equals(a, b))
            return 0;
        return (a < b)? -1 : 1;
    }
}

0 件のコメント :

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。