* 四舍五入的方法
*/
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