私は二重の比較をしなければなりません、私は多くのことを試しましたが、実際には何もうまくいきません..彼らはサイクルを止める責任があります. 最初に、(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);
このコードの何が問題なのですか? 私の知る限り、文字列コンストラクターを使用するのが最善なので、それを使用しています。2行目はジューシーな「java.lang.NumberFormatException」を返します。2行目をたとえば5.3222に編集すると、しばらくすると最初の行が同じエラーを返します。この比較のためだけに、double を BigDecimals に置き換える必要がありますか? それはばかげているように思えますが、この比較を行う簡単な方法が必要です。
少なくとも 1*10^-7 の精度で double を比較しようとしています。
前もって感謝します!