初学JAVA,写了个关于BigDecimal类中的处理小数点进位模式的代码。但是,关于ROUND_HALF_DOWN与ROUND_HALF_EVEN的结果很奇怪,为什么和ROUND_HALF_UP的结果是一样的,请高手指教代码:package java09;import java.math.BigDecimal;public class Ex03 {
static BigDecimal div(double value1, double value2, int scale,
int roundingMode) {
if (scale < 0) {
System.out.println("商的保留位数必须大于等于0");
return new BigDecimal("");
} else {
BigDecimal b1 = new BigDecimal(Double.toString(value1));
BigDecimal b2 = new BigDecimal(Double.toString(value2));
return b1.divide(b2, scale, roundingMode);
}
} public static void main(String[] args) {
System.out.println("ROUND_UP:"
+ Ex03.div(-6.8, 7, 6, BigDecimal.ROUND_UP));
System.out.println("ROUND_DOWN:"
+ Ex03.div(-6.8, 7, 6, BigDecimal.ROUND_DOWN));
System.out.println("ROUND_CEILING:"
+ Ex03.div(-6.8, 7, 6, BigDecimal.ROUND_CEILING));
System.out.println("ROUND_FLOOR:"
+ Ex03.div(-6.8, 7, 6, BigDecimal.ROUND_FLOOR));
System.out.println("ROUND_HALF_DOWN:"
+ Ex03.div(-6.8, 7, 6, BigDecimal.ROUND_HALF_DOWN));
System.out.println("ROUND_HALF_UP:"
+ Ex03.div(-6.8, 7, 6, BigDecimal.ROUND_HALF_UP));
System.out.println("ROUND_HALF_EVEN:"
+ Ex03.div(-6.8, 7, 6, BigDecimal.ROUND_HALF_EVEN));
}
}结果:
ROUND_UP:-0.971429
ROUND_DOWN:-0.971428
ROUND_CEILING:-0.971428
ROUND_FLOOR:-0.971429
ROUND_HALF_DOWN:-0.971429(照理说这结果应该是-0.971428??)
ROUND_HALF_UP:-0.971429
ROUND_HALF_EVEN:-0.971429
保留10位四舍五入后的结果为:-0.9714285714