我希望能够将任何数字四舍五入到整数的四分之一。
例如:
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
ETC...
谢谢各位...
我希望能够将任何数字四舍五入到整数的四分之一。
例如:
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
ETC...
谢谢各位...
这可以满足您的需要:它乘以 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
取决于你想要什么