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

本文对比了Java中使用BigDecimal和DecimalFormat处理浮点数的方法。通过示例展示了如何使用这两种方式保留特定位数的小数,并进行了四舍五入操作。此外,还介绍了DecimalFormat在格式化数字时的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.youkuaiyun.com/yansong_8686/article/details/27407513

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值