3

整数の 4 分の 1 に任意の数値を切り上げられるようにしたいと考えています。

例えば:

100.33 -> 100.50
100.12 -> 100.25
100.66 -> 100.75
100.99 -> 101.00
100.70 -> 100.75
100.00 -> 100.00
100.25 -> 100.25

等...

みんなありがとう...

4

3 に答える 3

9

これは必要なことを行います。4で乗算し、切り上げてから4で除算します。

    String[] tests = {
        "100.33", "100.12", "100.66", "100.99", "100.70", "100.00", "100.25",
    };
    final BigDecimal FOUR = BigDecimal.valueOf(4);
    for (String test : tests) {
        BigDecimal d = new BigDecimal(test);
        d = d.multiply(FOUR).setScale(0, RoundingMode.UP)
             .divide(FOUR, 2, RoundingMode.UNNECESSARY);
        System.out.println(d);
    }
于 2010-05-21T09:34:20.700 に答える
1

手動の介入なしにこれが可能だとは思いません。MathContextを BigDecimal コンストラクターに渡すことで、丸め設定を指定できます。ただし、そのクラスのオブジェクトで使用される丸めモードは、RoundingMode列挙型定数でなければなりません (これらのいずれも、必要な種類の丸めを実装していません)。これが代わりに、独自の定義を記述できるインターフェイスであればいいのですが、これで終わりです。

コードに必要なパフォーマンスに応じて、もちろん、数値を 4 倍し、最も近い整数に切り上げ、さらに 4 で割ることができます。これはおそらく実際のプログラミング作業が最も少なく、比較的理解しやすいので、コードがパフォーマンスが重要なセクションにない場合は、それをお勧めします。

于 2010-05-21T09:20:55.143 に答える
0

Math.round(x.doubleValue() * 4) / 4

またはMath.ceilまたはMath.floorあなたが望むものに応じて

于 2010-05-21T09:20:42.583 に答える