[Java基础] 如何保留两位小数
程序员文章站
2022-05-03 12:53:27
...
前言
前段时间在处理float
类型的数据的时候,发现在float/double
类型的数据输出时,总会遇到这样的问题.
例如: 1.000000000005
.
问题: 1. 位数过多,看起来比较难受; 2. 最后的尾数有偏移.
解决办法: 将尾数四舍五入;将位数进行截断.
正文
如何保留2位小数字?
- 使用
BigDecimal
的setScale()方法;- 使用
System.out.println("%2f",a);
- 使用
NumberFormat
的setMaximumFractionDigits(2)
的方法- 使用
DecimalFormat
的format
方法
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();
}
}