方法一:String的format方法(推荐)

double f = 111231.5585;

System.out.println(String.format("%.2f", f));

方法二:DecimalFormat的format方法

两者在位数超出的时候都是四舍五入

double f = 111231.5585;
//保留2位,不足补零
DecimalFormat df = new DecimalFormat("#.00");
System.out.println(df.format(f));


//保留2位,不足保留原位数,不补零
DecimalFormat df = new DecimalFormat("#.##");
System.out.println(df.format(f));

方法三:BigDecimal的setScale方法

ROUND_HALF_UP:ROUND_HALF_UP是我们常用的四舍五入,即舍入部分大于等于0.5时进位,否则丢弃舍入部分
ROUND_HALF_DOWN:通俗地说是五舍六入,即舍入部分大于0.5时进位,否则丢弃舍入部分

demo
111231.5585保留3位小数的时候,舍入部分为0.5,因为前面的.558舍去之后就剩下这个0.5
当采用ROUND_HALF_UP时进1,当采用ROUND_HALF_DOWN时直接舍去

在这里插入图片描述



BigDecimal bg = new BigDecimal(111231.5585;);
//保留2位小数,逢5向上进位
double f1 = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
//保留2位小数,逢5向下进位
//BigDecimal setScale = bg.setScale(2,BigDecimal.ROUND_HALF_DOWN);
System.out.println(f1);

方法四:NumberFormat的setMaximumFractionDigits方法

double f = 111231.5585;

NumberFormat nf = NumberFormat.getNumberInstance();
nf.setMaximumFractionDigits(2);
System.out.println(nf.format(f));
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.NumberFormat;
public class format {
   double f = 111231.5585;
   public void m1() {
       BigDecimal bg = new BigDecimal(f);
       double f1 = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
       System.out.println(f1);
   }
   /**
    * DecimalFormat转换最简便
    */
   public void m2() {
       DecimalFormat df = new DecimalFormat("#.00");
       System.out.println(df.format(f));
   }
   /**
    * String.format打印最简便
    */
   public void m3() {
       System.out.println(String.format("%.2f", f));
   }
   public void m4() {
       NumberFormat nf = NumberFormat.getNumberInstance();
       nf.setMaximumFractionDigits(2);
       System.out.println(nf.format(f));
   }
   public static void main(String[] args) {
       format f = new format();
       f.m1();
       f.m2();
       f.m3();
       f.m4();
   }
}
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐