java BigDecimal 添加千位分隔符,保留几位小数

含格式的都是String类的:比如添加千位分隔符的,转换为百分数格式的

1.使用DecimalFormat类,会返回String类型

舍入模式参考 DecimalFormat对数值格式化的舍入问题——RoundingMode

import static org.junit.Assert.*;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;

import org.junit.Test;

public class BigDecimalTest {

	/** 
	 * 使用DecimalFormat类   返回String类型
	 */
	@Test
	public void BigDecimalFormatTest() {
         	
		//0 一个数字 ; # 一个数字,不包括 0 
		//保留两位小数,如果不足两位小数则自动补零  
		DecimalFormat df1 = new DecimalFormat("###0.00") ;  
		df1.setRoundingMode(RoundingMode.HALF_UP); 
		System.out.println(df1.format(124.3));  
		System.out.println(df1.format(124.315));  //费解  没有四舍五入
		System.out.println(df1.format(124.325));  //费解  实现四舍五入
 	          
		 //保留两位小数,不足两位则不补零  
		DecimalFormat df2 = new DecimalFormat("###0.##") ;
		System.out.println(df2.format(124.6));  
		System.out.println(df2.format(124));  
		
		//保留两位小数,哪里不足位则补零
 		DecimalFormat df3 = new DecimalFormat("000.00"); 
		System.out.println(df3.format(24));
		
		//添加千位分隔符,保留3位小数,不足的补0
		DecimalFormat df4 = new DecimalFormat("#,##0.000");
		System.out.println(df4.format(new BigDecimal(3613.61)));
		System.out.println(df4.format(new BigDecimal(3613.613)));
		System.out.println(df4.format(new BigDecimal(3613.6135)));
		System.out.println(df4.format(new BigDecimal(3613.6136)));
 
		}

}

2.使用BigDecimal.setScale()方法,会返回BigDecimal类型,但是也可再转成String类型

import static org.junit.Assert.*;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;

import org.junit.Test;

public class BigDecimalTest {

 
	/**
	 * 使用BigDecimal的setScale()方法
	 * 
	 */
	@Test
	   public void setBigDecimalScale(){
		 
	        BigDecimal bd1 = new BigDecimal( 911.911);
	        BigDecimal bd2 = new BigDecimal( 911.91156);
	        bd1 = bd1.setScale(4, BigDecimal.ROUND_HALF_UP);
	        bd2 = bd2.setScale(4, BigDecimal.ROUND_HALF_UP);
	        
	        System.out.println("bd1=="+bd1);
	        System.out.println("bd2=="+bd2);
	        
           //返回String  不足位就补0
	        String str1 = bd1.setScale(4, BigDecimal.ROUND_HALF_UP).toString();
	        System.out.println("str1==="+str1);
	        //返回String  不足位也不补0
	        String str2 = new String(""+bd1.setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue());
	        System.out.println("str1==="+str2);

 	   }
	
}

3.BigDecimal和百分比格式互转 参考Java百分比、BigDecimal小数互转

import static org.junit.Assert.*;

import java.math.BigDecimal;
import java.text.DecimalFormat;

import org.junit.Test;

public class BigDecimalTest{

	@Test
	public void percentTest(){	
		//BigDecimal 转为百分比格式
		DecimalFormat df = new DecimalFormat("0.00%");  
		BigDecimal d=new BigDecimal(0.666);
		String percent=df.format(d);
		System.out.println("percent=="+percent);
		
		//百分比格式转为BigDecimal 
		percent=percent.replace("%","");
		Float f = Float.valueOf(percent) / 100;
		BigDecimal decimal = new BigDecimal(f);
		System.out.println(decimal);//-0.66600000858306884765625
	}
	
}

4.两个BigDecimal比较大小用compareTo()方法,比较结果有-1,0,1,分别表示小于,等于,大于

import static org.junit.Assert.*;

import java.math.BigDecimal;

import org.junit.Test;

public class BigDecimalTest {

	@Test
	  public void testEqual(){
		  BigDecimal value1 = new BigDecimal(3.14);
		  BigDecimal value2 = new BigDecimal(3.20);
		  if(value1.compareTo(value2) == 0){
			  System.out.println("value1 = value2");
		  }
		  if(value1.compareTo(value2) == 1){
			  System.out.println("value1 > value2");
		  }
		  if(value1.compareTo(value2) == -1){
			  System.out.println("value1 < value2");
		  }
		  
	  }
	
}


posted on 2018-05-21 16:49  dreamstar  阅读(3515)  评论(0编辑  收藏  举报