数字格式化
文章来源:《Head First Java》修炼感悟。
很多时候需要对数字或日期进行格式化操作,来达到某些输出效果。Java 的 Formatter 类提供了很多扩展性功能用于字符串的格式化,只要调用 String 静态方法 format()
,传入参数并设定格式就可以得到满意的字符串。
一、基本语法
1、方法定义
java
public static String format(String format, Object... args);
2、 方法参数
format
格式字符串,描述如何格式化,必须以格式说明符 % 开始;args
格式字符串中由格式说明符引用的参数。如果还有格式说明符以外的参数,则忽略。这个参数是可变参数,也可以为 0。
3、方法返回值
- 返回格式化后的字符串。
4、格式字符串
%
,格式说明符,表示用它后面的格式去格式化对应的原始数据;flags
,标识符,例如以逗号分隔数字,或者为数字添加正负号等;width
,输出的字符串最小宽度(字符数);precision
,输出位数,例如指定小数位数,截取字符个数等;type
,数据类型,必须指定。
老白提醒: 以上是完整格式,其中方括号中的选项可以省略,但格式说明符和类型符号不能省略。
二、常用格式设定
%d
十进制整数,以逗号分隔,例如:
java
String.format("%,d", 1000000000);
// 输出结果:1,000,000,000
%f
,浮点数,默认保留6位小数点(四舍五入),例如:
java
String.format("%f", 4387.2983749872);
// 输出结果:4387.298375
%.nf
,浮点数,保留 n 位小数点(四舍五入),例如:
java
String.format("%.2f", 4387.2983749872);
// 输出结果:4387.30
%nf
,浮点数右对齐,输出至少占据 n 个字符宽度,例如:
java
String.format("|%,6.1f|", 42.000);
// 输出结果:| 42.0|
%-nf
,浮点数左对齐,输出至少占据 n 个字符宽度,例如:
java
String.format("|%,-6.1f|", 42.000);
// 输出结果:|42.0 |
%.ns
,字符串,截取前 n 个字符,例如:
java
String.format("%.5s", "hello world");
// 输出结果:hello
%0nd
,在前面补零,直到满足 n 个字符宽度,例如:
java
String.format("%08d", 123);
// 输出结果:00000123
三、格式化多个参数
format()
方法可以同时格式化多个参数,例如有这样一个字符串:
The rank is 20,456,654 out of 100,567,890.24.
要想达到上述效果,需要对字符串中的两个数字分别进行格式化。 例如:
java
int one = 20456654;
double two = 100567890.243907;
String s = String.format("The rank is %,d" out of %,.2f, one, two);
// 输出结果:The rank is 20,456,654 out of 100,567,890.24
参数 one
对应第一个格式标识符,two
对应第二个格式标识符,允许后面跟随多个参数。
《 上一篇 人性化的 Autoboxing | 下一篇 日期/时间格式化 》 |
---|