DecimalFormat 保留精度或者是 小数 比较好用

DecimalFormat 还是比较稳定和好用的 。少bug .

BigDecimal 类也有 四舍五入 ,和 保留 多少位小数 等等方法。 比如 ROUND_HALF_UP 可是 在使用的时候,还是比较难用,在某些情况下面 ,还是 会有多位小数的。 比如下面的我自己测试的 demo 不知道为什么 BigDecimal 不能保留 2位小数, DecimalFormat 可以保留2位小数,而且很好用啊,变字符串什么的,也可以通过字符串变其他 类型。好用多了。

double total =0.00;
		total=total+ 3
				*0.01*30;
		BigDecimal bigDecimal=new BigDecimal(total);
		
		DecimalFormat df = new DecimalFormat("#########0.##");
		df.setRoundingMode(RoundingMode.HALF_UP); //保留2位小数 ,不足不补0  
		System.out.println(">>>>"+df.format(total));
		
		bigDecimal.setScale(2,BigDecimal.ROUND_HALF_UP);
		System.out.println(bigDecimal.toString());
		BigDecimal totalScore=new BigDecimal("0.00");
		totalScore=totalScore.add(bigDecimal);
		double change = bigDecimal.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
		BigDecimal changeDecimal=new BigDecimal(change);
		System.out.println(changeDecimal.toString());
DecimalFormat df1 = new DecimalFormat("###0.00") ;  //保留两位小数,如果不足两位小数则自动补零  
System.out.println(df1.format(124.367));  
System.out.println(df1.format(124.3));  
          
DecimalFormat df2 = new DecimalFormat("###0.##") ; //保留两位小数,不足两位则不补零  
System.out.println(df2.format(124.6));  
System.out.println(df2.format(124));  
以下是保留两位小数,同时四舍五入,然后小数点前从右到作,3位一个逗号分隔符 
 float   scale  =   (float) 3434567;     
DecimalFormat   fnum  =   new  DecimalFormat("###,##0.00");   
String   dd=fnum.format(scale);         
System.out.println(dd);//3,434,567.00  

参考地址: http://blog.csdn.net/yansong_8686/article/details/27407513

转载于:https://my.oschina.net/ouminzy/blog/855530

你可能感兴趣的:(DecimalFormat 保留精度或者是 小数 比较好用)