3.6 设置输出的格式

使用 printprintln 输出 double 值时,最多显示 16 位小数:

  1. System.out.print(4.0 / 3.0);

结果如下:

  1. 1.3333333333333333

这可能比你想要的要多。System.out 提供了另一个方法 printf,让你对输出格式有更大的控制权,printf 中的 f 指的是“格式化”。以下是一个示例:

  1. System.out.printf("Four thirds = %.3f", 4.0 / 3.0);

括号中的第一个值为格式字符串(format string),指定了输出的显示方式。上述的格式字符串中包含普通文本,普通文本的后面是格式说明符(format specifier)——以百分号打头的特殊序列。格式说明符 %.3f 指定接下来的值应显示为浮点数,并舍入到三位小数。上述代码的结果如下:

  1. Four thirds = 1.333

格式字符串可包含任意数目的格式说明符,下面的格式字符串就包含了两个格式说明符:

  1. int inch = 100;
  2. double cm = inch * CM_PER_INCH;
  3. System.out.printf("%d in = %f cm\n", inch, cm);

结果如下:

  1. 100 in = 254.000000 cm

print 一样,printf 也不在末尾换行;所以格式字符串通常以换行符结尾。

格式说明符 %d 用于显示整数值,其中的 d 表示 decimal(十进制)。值依次与格式说明符配对,因此,用于 inch 的格式说明符为 %d,用于 cm 的格式说明符为 %f

学习格式字符串相当于学习 Java 中的一种子语言;涉及的选项很多,细节可能让人不可重负。表 3-1 列出了一些常用的格式说明符,旨在让你大致地了解其中的工作原理;更多细节请参阅 java.util.Formatter 的相关文档。要想找到有关 Java 类的文档,最简单的方法是在网上搜索 Java 和类名。

表3-1:格式说明符示例

%d十进制整数12345
%08d添加前导零,确保显示的值至少包含 8 位00012345
%f浮点数6.789000
%.2f舍入到两位小数6.79