我希望能够将任何数字四舍五入到整数的四分之一。
例如:
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
等... 谢谢你们......
答案 0 :(得分:6)
这可以满足您的需求:它乘以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);
}
答案 1 :(得分:1)
如果没有一些人工干预,我不相信这是可能的。您可以通过将MathContext传递给BigDecimal构造函数来指定舍入设置;但是,该类对象中使用的舍入模式必须是RoundingMode枚举常量(并且没有一个实现所需的舍入类型)。如果这是一个可以编写自己定义的界面,那就太好了,但是你有它。
根据您的代码需要的性能,您当然可以将数字乘以4,向上舍入到最接近的整数,再次除以4。这可能是最不实际的编程工作,并且相对容易理解,因此如果您的代码不在性能关键部分,那么这就是我的建议。
答案 2 :(得分:0)
Math.round(x.doubleValue() * 4) / 4
或Math.ceil
或Math.floor
取决于您的需求