我必须进行双重比较,我尝试了很多东西,但没有任何效果..他们负责停止循环。首先,使用 (double) Math.round(x*10000000)/10000000 比较 double 的他们自己,工作得很好,但后来.. 数字是相同的,但不是(反之亦然),所以循环无休止地继续。尝试将它们四舍五入并比较长值,仍然相同。最后,尝试使用 Big-decimal,再次遇到问题。
BigDecimal value=new BigDecimal(Double.toString(decimalNumber),MathContext.DECIMAL32);
BigDecimal temp=new BigDecimal(Double.toString((1/count)*sum),MathContext.DECIMAL32);
这段代码有什么问题?据我所知,最好使用字符串构造函数,所以我正在使用它。第二行返回一个多汁的“java.lang.NumberFormatException”,如果我将第二行编辑为例如 5.3222,一段时间后,第一行返回相同的错误。我应该用 BigDecimals 替换双精度数,仅用于此比较吗?这对我来说似乎很愚蠢,必须有一种简单的方法来进行这种比较。
我正在尝试比较双打,精度至少为 1*10^-7。
提前致谢!