BigDecimal

/**
 * 四舍五入的方法
 */
package Test1;

import java.math.BigDecimal;


public class BigDecimalDemo1 {

public static void main(String[] args) {
// TODO Auto-generated method stub
double i=2, j=2.1, k=2.5, m=2.9; 
  System.out.println("舍掉小数取整:Math.floor(2)=" + (int)Math.floor(i)); 
  System.out.println("舍掉小数取整:Math.floor(2.1)=" + (int)Math.floor(j)); 
  System.out.println("舍掉小数取整:Math.floor(2.5)=" + (int)Math.floor(k)); 
  System.out.println("舍掉小数取整:Math.floor(2.9)=" + (int)Math.floor(m)); 
 
  System.out.println("***************常规四舍五入******************");
  System.out.println("四舍五入取整:(2)=" + new BigDecimal("2").setScale(0, BigDecimal.ROUND_HALF_UP)); 
  System.out.println("四舍五入取整:(2.1)=" + new BigDecimal("2.1").setScale(0, BigDecimal.ROUND_HALF_UP)); 
  System.out.println("四舍五入取整:(2.4)=" + new BigDecimal("2.4").setScale(0, BigDecimal.ROUND_HALF_UP));
  System.out.println("四舍五入取整:(2.5)=" + new BigDecimal("2.5").setScale(0, BigDecimal.ROUND_HALF_UP)); 
  System.out.println("四舍五入取整:(2.9)=" + new BigDecimal("2.9").setScale(0, BigDecimal.ROUND_HALF_UP));
  System.out.println("*****************五舍六入******************");
  System.out.println("四舍五入取整:(2)=" + new BigDecimal("2").setScale(0, BigDecimal.ROUND_HALF_DOWN)); 
  System.out.println("四舍五入取整:(2.1)=" + new BigDecimal("2.1").setScale(0, BigDecimal.ROUND_HALF_DOWN)); 
  System.out.println("四舍五入取整:(2.4)=" + new BigDecimal("2.4").setScale(0, BigDecimal.ROUND_HALF_DOWN));
  System.out.println("四舍五入取整:(2.5)=" + new BigDecimal("2.5").setScale(0, BigDecimal.ROUND_HALF_DOWN)); 
  System.out.println("四舍五入取整:(2.9)=" + new BigDecimal("2.9").setScale(0, BigDecimal.ROUND_HALF_DOWN));

  System.out.println("*****************向下取整******************");
  System.out.println("向下取整:(2)=" + new BigDecimal("2").setScale(0, BigDecimal.ROUND_DOWN)); 
  System.out.println("向下取整:(2.1)=" + new BigDecimal("2.11").setScale(0, BigDecimal.ROUND_DOWN)); 
  System.out.println("向下取整:(2.5)=" + new BigDecimal("2.562").setScale(0, BigDecimal.ROUND_DOWN)); 
  System.out.println("向下取整:(2.9)=" + new BigDecimal("2.947").setScale(0, BigDecimal.ROUND_DOWN));
  System.out.println("*****************向上取整******************");
  System.out.println("向上取整:(2)=" + new BigDecimal("2").setScale(0, BigDecimal.ROUND_UP)); 
  System.out.println("向上取整:(2.1)=" + new BigDecimal("2.1").setScale(0, BigDecimal.ROUND_UP)); 
  System.out.println("向上取整:(2.5)=" + new BigDecimal("2.5").setScale(0, BigDecimal.ROUND_UP)); 
  System.out.println("向上取整:(2.9)=" + new BigDecimal("2.9").setScale(0, BigDecimal.ROUND_UP));


  System.out.println("*****************数学方法向上取整******************");
  System.out.println("凑整:Math.ceil(2)=" + (int)Math.ceil(i)); 
  System.out.println("凑整:Math.ceil(2.1)=" + (int)Math.ceil(j)); 
  System.out.println("凑整:Math.ceil(2.5)=" + (int)Math.ceil(k)); 
  System.out.println("凑整:Math.ceil(2.9)=" + (int)Math.ceil(m));
  System.out.println("*****************数学方法向下取整******************");
  System.out.println("舍掉小数取整:Math.floor(-2)=" + (int)Math.floor(-i)); 
  System.out.println("舍掉小数取整:Math.floor(-2.1)=" + (int)Math.floor(-j)); 
  System.out.println("舍掉小数取整:Math.floor(-2.5)=" + (int)Math.floor(-k)); 
  System.out.println("舍掉小数取整:Math.floor(-2.9)=" + (int)Math.floor(-m)); 
  System.out.println("*****************四舍五入******************");
  System.out.println("四舍五入取整:(-2)=" + new BigDecimal("-2").setScale(0, BigDecimal.ROUND_HALF_UP)); 
  System.out.println("四舍五入取整:(-2.1)=" + new BigDecimal("-2.1").setScale(0, BigDecimal.ROUND_HALF_UP)); 
  System.out.println("四舍五入取整:(2.4)=" + new BigDecimal("2.4").setScale(0, BigDecimal.ROUND_HALF_UP));
  System.out.println("四舍五入取整:(-2.5)=" + new BigDecimal("-2.5").setScale(0, BigDecimal.ROUND_HALF_UP)); 
  System.out.println("四舍五入取整:(-2.9)=" + new BigDecimal("-2.9").setScale(0, BigDecimal.ROUND_HALF_UP));
  System.out.println("*****************数学方法向上取整******************");
  System.out.println("凑整:Math.ceil(-2)=" + (int)Math.ceil(-i)); 
  System.out.println("凑整:Math.ceil(-2.1)=" + (int)Math.ceil(-j)); 
  System.out.println("凑整:Math.ceil(-2.5)=" + (int)Math.ceil(-k)); 

  System.out.println("凑整:Math.ceil(-2.9)=" + (int)Math.ceil(-m)); 

 //MathContext(int,RoundingMode)第一个参数是设置的精度,第二个参数是:舍入模式的设置
//四舍五入
  System.out.println("***************常规四舍五入(科学计数法)******************");
  MathContext mc1 = new MathContext(2,RoundingMode.HALF_DOWN);  
  System.out.println("bd1="+new BigDecimal("0.87434643298346",mc1)); 
  System.out.println("bd1="+new BigDecimal("0.87534643298346",mc1));  
  System.out.println("bd1="+new BigDecimal("0.87634643298346",mc1));  
        //五舍六入
  System.out.println("*****************五舍六入(科学计数法)******************");
  MathContext mc2 = new MathContext(2,RoundingMode.HALF_DOWN);  
  System.out.println("bd2="+new BigDecimal("0.87434643298346",mc2));  
  System.out.println("bd2="+new BigDecimal("0.87534643298346",mc2));
  System.out.println("bd2="+new BigDecimal("0.87634643298346",mc2));
 
  //向下舍入
  System.out.println("*****************向下舍入(科学计数法)******************");
  MathContext mc3 = new MathContext(2,RoundingMode.DOWN);  
  System.out.println("bd3="+new BigDecimal("0.87434643298346",mc3));  
  System.out.println("bd3="+new BigDecimal("0.87534643298346",mc3));
  System.out.println("bd3="+new BigDecimal("0.87634643298346",mc3));

}


}



运行效果为:

舍掉小数取整:Math.floor(2)=2
舍掉小数取整:Math.floor(2.1)=2
舍掉小数取整:Math.floor(2.5)=2
舍掉小数取整:Math.floor(2.9)=2
***************常规四舍五入******************
四舍五入取整:(2)=2
四舍五入取整:(2.1)=2
四舍五入取整:(2.4)=2
四舍五入取整:(2.5)=3
四舍五入取整:(2.9)=3
*****************五舍六入******************
四舍五入取整:(2)=2
四舍五入取整:(2.1)=2
四舍五入取整:(2.4)=2
四舍五入取整:(2.5)=2
四舍五入取整:(2.9)=3
*****************向下取整******************
向下取整:(2)=2
向下取整:(2.1)=2
向下取整:(2.5)=2
向下取整:(2.9)=2
*****************向上取整******************
向上取整:(2)=2
向上取整:(2.1)=3
向上取整:(2.5)=3
向上取整:(2.9)=3
*****************数学方法向上取整******************
凑整:Math.ceil(2)=2
凑整:Math.ceil(2.1)=3
凑整:Math.ceil(2.5)=3
凑整:Math.ceil(2.9)=3
*****************数学方法向下取整******************
舍掉小数取整:Math.floor(-2)=-2
舍掉小数取整:Math.floor(-2.1)=-3
舍掉小数取整:Math.floor(-2.5)=-3
舍掉小数取整:Math.floor(-2.9)=-3
*****************四舍五入******************
四舍五入取整:(-2)=-2
四舍五入取整:(-2.1)=-2
四舍五入取整:(2.4)=2
四舍五入取整:(-2.5)=-3
四舍五入取整:(-2.9)=-3
*****************数学方法向上取整******************
凑整:Math.ceil(-2)=-2
凑整:Math.ceil(-2.1)=-2
凑整:Math.ceil(-2.5)=-2
凑整:Math.ceil(-2.9)=-2

***************常规四舍五入(科学计数法)******************
bd1=0.87
bd1=0.88
bd1=0.88
*****************五舍六入(科学计数法)******************
bd2=0.87
bd2=0.88
bd2=0.88
*****************向下舍入(科学计数法)******************
bd3=0.87
bd3=0.87
bd3=0.87

另可参考:http://www.cnblogs.com/xd502djj/archive/2011/07/21/2112683.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值