整数の 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 分の 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で乗算し、切り上げてから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);
}
手動の介入なしにこれが可能だとは思いません。MathContextを BigDecimal コンストラクターに渡すことで、丸め設定を指定できます。ただし、そのクラスのオブジェクトで使用される丸めモードは、RoundingMode列挙型定数でなければなりません (これらのいずれも、必要な種類の丸めを実装していません)。これが代わりに、独自の定義を記述できるインターフェイスであればいいのですが、これで終わりです。
コードに必要なパフォーマンスに応じて、もちろん、数値を 4 倍し、最も近い整数に切り上げ、さらに 4 で割ることができます。これはおそらく実際のプログラミング作業が最も少なく、比較的理解しやすいので、コードがパフォーマンスが重要なセクションにない場合は、それをお勧めします。
Math.round(x.doubleValue() * 4) / 4
またはMath.ceil
またはMath.floor
あなたが望むものに応じて