java double精度输出问题

2025-03-07 03:25:01
推荐回答(3个)
回答1:

这里不能直接用System.out.println("%.6f",s);

java将print封装成了三个输出格式:

  1. System.out.println();  输出后换行

  2. System.out.printf();   输出带指定格式的内容

  3. System.out.print();  直接打印,不换行

要实现精度控制,需要用第2中格式的输出!

回答2:

double PI=3.14159265358979323;
double s=(PI*4*4);

BigDecimal bg = new BigDecimal(s);
double f1 = bg.setScale(7, BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println(f1);

DecimalFormat df = new DecimalFormat (".0000000");
System.out.println (df.format (s));

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

NumberFormat nf = NumberFormat.getInstance ();
nf.setMaximumFractionDigits (7);
System.out.println (nf.format (s));

回答3:

System.out.printf("%.6f",s);