正しい小数点以下の桁数を確認するには、正しい結果の大きさの順序ではなく、差の大きさの桁数を確認します。だから私は、あなたが、BigDecimal
にごdouble
計算結果を変換し、正確な結果を引き、その後、double
に戻って変換し、ベースで10
を対数を取るために必要とするか、またはあなただけの結果が正確であるかどうかを確認する必要がある場合と仮定します差がある場合、Xに小数点以下の桁数は、単なるチェックよりも大きい0.5 * 10 ^( - x)の、または同等:そのおそらくによっては右に終了されていません実際に
int x = 3; // number of decimal places required
BigDecimal difference = accurateResult.subtract(new BigDecimal(approxResult));
BigDecimal testStat = difference.movePointRight(x).abs();
boolean ok = testStat.compareTo(new BigDecimal(0.5)) <= 0;
は正確にあなたは正しい」とはどういう意味x小数点以下の桁数 "と厳格な必要があります。 0.15001と0.24999は小数点以下1桁に等しいと言えますが(両方とも0.2まで)、0.19999と0.25001は違いはありません。そのようにすれば、明示的に両方の数値を小数点以下の桁数に丸めて比較しなければならないと思います。
出典
2011-06-24 15:12:44
Ben