对于BigDecimal来说,四舍六入是肯定的,没什么好说的,
但是如果需要做处理的小数位刚好是5,那就看下面的例子吧
import java.math.BigDecimal;
public class TestBigDecimal {
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
System.out.println("33.375");
System.out.println("ROUND_UP : " + (new BigDecimal("33.375")).setScale(2, BigDecimal.ROUND_UP));
System.out.println("ROUND_DOWN : " + (new BigDecimal("33.375")).setScale(2, BigDecimal.ROUND_DOWN));
System.out.println("ROUND_HALF_UP : " + (new BigDecimal("33.375")).setScale(2, BigDecimal.ROUND_HALF_UP));
System.out.println("ROUND_HALF_DOWN : " + (new BigDecimal("33.375")).setScale(2, BigDecimal.ROUND_HALF_DOWN));
System.out.println("ROUND_HALF_EVEN 奇数: " + (new BigDecimal("33.375")).setScale(2, BigDecimal.ROUND_HALF_EVEN));
System.out.println("ROUND_HALF_EVEN 偶数: " + (new BigDecimal("33.385")).setScale(2, BigDecimal.ROUND_HALF_EVEN));
System.out.println("--------------------------------");
System.out.println("ROUND_CEILING 正値 : " + (new BigDecimal("+33.375")).setScale(2, BigDecimal.ROUND_CEILING));
System.out.println("ROUND_FLOOR 正値: " + (new BigDecimal("+33.375")).setScale(2, BigDecimal.ROUND_FLOOR));
System.out.println("ROUND_CEILING 负値: " + (new BigDecimal("-33.375")).setScale(2, BigDecimal.ROUND_CEILING));
System.out.println("ROUND_FLOOR 负値: " + (new BigDecimal("-33.375")).setScale(2, BigDecimal.ROUND_FLOOR));
}
}
结果:
写道
33.375
ROUND_UP : 33.38
ROUND_DOWN : 33.37
ROUND_HALF_UP : 33.38
ROUND_HALF_DOWN : 33.37
ROUND_HALF_EVEN 奇数: 33.38
ROUND_HALF_EVEN 偶数: 33.38
--------------------------------
ROUND_CEILING 正値 : 33.38
ROUND_FLOOR 正値: 33.37
ROUND_CEILING : -33.37
ROUND_FLOOR : -33.38
ROUND_UP : 33.38
ROUND_DOWN : 33.37
ROUND_HALF_UP : 33.38
ROUND_HALF_DOWN : 33.37
ROUND_HALF_EVEN 奇数: 33.38
ROUND_HALF_EVEN 偶数: 33.38
--------------------------------
ROUND_CEILING 正値 : 33.38
ROUND_FLOOR 正値: 33.37
ROUND_CEILING : -33.37
ROUND_FLOOR : -33.38