許容値はでっちあげなので、要調整
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 件のコメント :
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。