我有一組數字,其精度各不相同。我需要從它們中創建一個hashkey。 此代碼顯示數字相等(以相關精度)。那麼,什麼是散列函數可以爲相等的數字返回相等的值?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());
BTW,BigDecimal的未開箱的我,因爲12.34 @ 2精度爲12 ...我需要的精度來實現一切都會過去的小數點。 (因此,是否有更合適的庫類?)
12.34 @ 2精度確實是12,因爲精確計算所有的數字,不僅小數點後的人。 – dasblinkenlight 2012-01-12 16:44:21