gpt4 book ai didi

java - BigDecimal 导数的哈希码

转载 作者:行者123 更新时间:2023-12-02 08:01:29 25 4
gpt4 key购买 nike

我有一组精度不同的数字。我需要用它们创建一个哈希键。此代码显示数字是相等的(在相关精度下)。那么,对于相同的数字返回相同的值的哈希函数是什么?

    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 ...我需要精度来影响小数点之后的所有内容。 (那么,有没有更合适的库类呢?)

最佳答案

一个似乎有效的答案是:

new Double(bd.doubleValue()).hashCode()

如果这有什么错误,请告诉我。

关于java - BigDecimal 导数的哈希码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8838708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com