私はさまざまな精度で数字のセットを持っています。私はそれらのハッシュキーを作成する必要があります。 このコードは、数値が(関連する精度で)等しいことを示しています。だから、等しい数の等しい値を返すハッシュ関数は何ですか? 12.34 2 @精度は12だったのでBigDecimal派生コードのハッシュコード
int prec = 2;
double val=12.3456;
int digits = (int)Math.log(val);
MathContext mc = new MathContext(digits+prec);
BigDecimal bd = new BigDecimal(12.3020, mc);
System.out.println("Value A:"+bd.toString());
MathContext mcx = new MathContext(digits+prec-1);
BigDecimal bdx = new BigDecimal(12.3170, mcx);
System.out.println("Value A:"+bdx.toString());
System.out.println("Difference is:"+bdx.compareTo(bd));
System.out.println("HashCode A:"+bd.hashCode());
System.out.println("HashCode B:"+bdx.hashCode());
ところで、BigDecimalのは、私のために箱から出して動作しませんでした...私は、小数点過去のすべてを達成するために精度を必要としています。 (それでは、もっと適切なライブラリクラスがありますか?)
12.34 2 @精度が実際に12で、精度がすべての桁、小数点以下のないものだけをカウントしているため。 – dasblinkenlight