Java 保留两位小数的几种方法
Java 中保留两位小数有多种写法,不同场景适用不同方法。下面按常用程度排序。
一、BigDecimal(推荐)
BigDecimal bd = new BigDecimal("3.14159");
bd = bd.setScale(2, RoundingMode.HALF_UP);
System.out.println(bd); // 3.14
优点:精度可控,不会丢失精度。缺点:代码稍长。
二、String.format
double d = 3.14159;
String s = String.format("%.2f", d);
System.out.println(s); // 3.14
优点:简洁,适合输出。缺点:返回字符串,后续计算需再转回数字。
三、DecimalFormat
DecimalFormat df = new DecimalFormat("#.00");
String s = df.format(3.14159);
System.out.println(s); // 3.14
优点:格式化灵活,支持千分位、百分比等。缺点:线程不安全,需每次 new 或 ThreadLocal。
四、Math.round
double d = 3.14159;
double r = Math.round(d * 100.0) / 100.0;
System.out.println(r); // 3.14
优点:简单。缺点:浮点运算可能有精度误差(如 3.1400000000000001)。
五、总结
需要精确计算用 BigDecimal;仅用于显示用 String.format 或 DecimalFormat;避免用 Math.round 做金融计算。