2 つの があり、有効数字BigDecimal
に基づいてそれらが近いかどうかを判断したいと思います。
たとえば、次のことを考慮してください。
BigDecimal million = new BigDecimal(1_000_000);
BigDecimal tenmillion = new BigDecimal(10_000_000);
BigDecimal a = new BigDecimal("55.89").multiply(million);
BigDecimal b = new BigDecimal("55.88").multiply(million);
BigDecimal c = new BigDecimal("55.88").multiply(tenmillion);
生の数値では数千単位で区切られていても、有効桁数が 1 桁しか離れていないため、a
とb
が近い (そしてそうではない) と判断できるようにしたいと考えています。c
これを決定する最良の方法は何ですか?
たとえば、最下位桁を に置き換えることもできますが、それはそのままにして0
しまうため、実際には正しい解決策ではありません。55.81 == 55.89
55.89 != 55.90