Java保留小数点后两位

方法一:String的format方法

double num = 1234.5678;
/*
* %.2f
* % 表示小数点前任意位数
* 2 表示两位小数,格式后的结果为 f 表示浮点型,如果保留4位小数则是%.4f
*/
String str = String.format("%.2f", num);

方法二:DecimalFormat的format方法

/*
* #与0的区别:
* #:没有则为空
* 0:没有则补0
*
* 0.00:第一个零表示个位在没有数字时补零,有则直接显示;小数位的0表示该位没有数字时补零显示,且.00表示保留两位小数,其它位均正常显示
* 0.##:0表示该位没有数字时补零显示,有则直接显示
* #.00:小数点左边的#表示在没有数字时或只有个位且个位为零的时候填位为空,其它情况均正常显示;
*       小数位的0表示该位没有数字则补零显示,有则直接显示;.00表示保留两位小数
* #.##:.##只保留有意义小数位数,也就是说,1.00不保留两位小数,而1.01则保留两位小数
*/
DecimalFormat df1 = new DecimalFormat("0.00");
String str = df1.format(.1); --0.10
String str = df1.format(0.1); --0.10
String str = df1.format(0.100); --0.10
String str = df1.format(1.); --1.00
String str = df1.format(1.1); --1.10
String str = df1.format(11); --11.00

DecimalFormat df2 = new DecimalFormat("0.##");
String str = df2.format(.1); --0.1
String str = df2.format(0.1); --0.1
String str = df2.format(0.100); --0.1
String str = df2.format(1.); --1
String str = df2.format(1.1); --1.1
String str = df2.format(11); --11

DecimalFormat df3 = new DecimalFormat("#.00");
String str = df3.format(.1); --.10
String str = df3.format(0.1); --.10
String str = df3.format(0.100); --.10
String str = df3.format(1.); --1.00
String str = df3.format(1.1); --1.10
String str = df3.format(11); --11.00

DecimalFormat df4 = new DecimalFormat("#.##");
String str = df4.format(0.); --0
String str = df4.format(.1); --0.1
String str = df4.format(0.1); --0.1
String str = df4.format(0.100); --0.1
String str = df4.format(1.); --1
String str = df4.format(1.1); --1.1
String str = df4.format(11); --11

方法三:BigDecimal的setScale方法

/*
* ROUND_UP:进位制 不管保留数字后面是大是小(0除外)都会进1
* ROUND_DOWN:保留设置数字,后面所有直接去除
* ROUND_HALF_UP:根据保留数字后一位>=5进行四舍五入
* ROUND_HALF_DOWN:根据保留数字后一位>5进行五舍六入
*/
BigDecimal bd = new BigDecimal(1234.5432);
bd = bd.setScale(2, BigDecimal.ROUND_UP); --1234.55

BigDecimal bd = new BigDecimal(1234.5678);
bd = bd.setScale(2, BigDecimal.ROUND_DOWN); --1234.56

BigDecimal bd = new BigDecimal(1234.5432);
bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP); --1234.54
BigDecimal bd = new BigDecimal(1234.5678);
bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP); --1234.57

/*
* 舍弃的值一定要正好等于5或者小于5,比如1234.4551,
* 保留两位小数,舍弃的是0.0051,大于了0.0050,所以仍然会进一位。
*/
BigDecimal bd = new BigDecimal(1234.455);
bd = bd.setScale(2, BigDecimal.ROUND_HALF_DOWN); --1234.45
BigDecimal bd = new BigDecimal(1234.4551);
bd = bd.setScale(2, BigDecimal.ROUND_HALF_DOWN); --1234.46
BigDecimal bd = new BigDecimal(1234.4567);
bd = bd.setScale(2, BigDecimal.ROUND_HALF_DOWN); --1234.46

方法四:NumberFormat的setMaximumFractionDigits方法

double num = 1234.5678;
NumberFormat nf = NumberFormat.getNumberInstance();
/*
 * setMinimumFractionDigits设置成2
 * 如果不这么做,那么当value的值是100.00的时候返回100
 * 而不是100.00
 */
nf.setMaximumFractionDigits(2);
/*
 * 如果想输出的格式用逗号隔开,可以设置成true
 */
nf.setGroupingUsed(false);
String str = nf.format(num);
  • 9
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值