比率の計算(積)の境界値を求める(for Java)

比率の積算値(比率と任意の値を積算して四捨五入)が0になるかどうかの境界値、、、
小数点6桁の場合は、以下のとおりである。

比率 比率 × value
0.000001 1以上、500000未満は、結果=0 、500000以上⇒ 結果>=1
0.000002 1以上、250000未満は、結果=0 、250000以上⇒ 結果>=1
0.000003 1以上、166667未満は、結果=0 、166667以上⇒ 結果>=1
0.000004 1以上、125000未満は、結果=0 、125000以上⇒ 結果>=1
0.000005 1以上、100000未満は、結果=0 、100000以上⇒ 結果>=1
0.000006 1以上、 83333未満は、結果=0 、 83333以上⇒ 結果>=1
0.000007 1以上、 71429未満は、結果=0 、 71429以上⇒ 結果>=1
0.000008 1以上、 62600未満は、結果=0 、 62600以上⇒ 結果>=1

この境界値を求めるのに頭の中だけで計算できるのは、せいぜい 0.000005 ぐらいまでだろう。

任意に、0.003017 の境界値を求める。
JavaBigDecimal で以下のように計算すれば良い。

int n = BigDecimal.ONE.divide(BigDecimal.valueOf(2))
        .divide(new BigDecimal("0.003017"), 0, RoundingMode.UP)
        .intValue();

結果は、

166

0.000001~0.000020 のそれぞれの境界値を並べた List は、以下のように求める。

List<Integer> list = IntStream.rangeClosed(1, 20).boxed()
                   .map(e->BigDecimal.valueOf(e).divide(BigDecimal.valueOf(1000000)).setScale(6))
                   .map(e->BigDecimal.ONE.divide(BigDecimal.valueOf(2)).divide(e, 0, RoundingMode.UP).intValue())
                   .collect(Collectors.toList());

List は、

[500000, 250000, 166667, 125000, 100000, 83334, 71429, 62500, 55556, 50000, 45455, 41667, 38462, 35715, 33334, 31250, 29412, 27778, 26316, 25000]