Java string.format 控制整数与浮点数总结

1. 对整数进行格式化:%[index]$[标识][最小宽度]转换方式

标识:

  '-' 在最小宽度内左对齐,不可以与“用0填充”同时使用

  '#' 只适用于8进制和16进制,8进制时在结果前面增加一个0,16进制时在结果前面增加0x

  '+' 结果总是包括一个符号(一般情况下只适用于10进制,若对象为BigInteger才可以用于8进制和16进制)

  ' ' 正值前加空格,负值前加负号(一般情况下只适用于10进制,若对象为BigInteger才可以用于8进制和16进制)

  '0' 结果将用零来填充

  ',' 只适用于10进制,每3位数字之间用“,”分隔

  '(' 若参数是负数,则结果中不添加负号而是用圆括号把数字括起来(同‘+’具有同样的限制)


转换方式:

  d-十进制 o-八进制 x或X-十六进制


举几个例子:

System.out.println(String.format("%1$,02d,test %2$,011d", -3123,1234));

输出内容:-3,123,test 0000001,234


System.out.println(String.format("%1d,test %4$,011d", -3123,1234,45,23)); 

输出内容:-3123,test 00000000023


System.out.println(String.format("%1$+dthe text here will show %2$,+011d", -3123,1234,45,23)); 

输出内容:-3123the text here will show +000001,234

详解:

1. 在这串参数中,除了%[index]$[标识][最小宽度]转换方式 这一部分的内容用于设定输出格式外,其他的字符都会被输出。

2. 这串参数内没有被 %index提到的参数的都不会被输出,index从1开始数起。

3. %跟着index,两者缺一不可。

4. $后面跟着标识,可以连续跟几个标识,但不可有$没有标识。

5. 转换方式不可省略。

6. %是转意符


2. 对浮点数进行格式化:%[index]$[标识][最少宽度].[精度]转换方式

标识: 

'-'    在最小宽度内左对齐,不可以与“用0填充”同时使用
'+'    结果总是包括一个符号
'  '    正值前加空格,负值前加负号
'0'    结果将用零来填充
','    每3位数字之间用“,”分隔(只适用于fgG的转换)
'('    若参数是负数,则结果中不添加负号而是用圆括号把数字括起来(只适用于eEfgG的转换)


转换方式:
'e', 'E'  --  结果被格式化为用计算机科学记数法表示的十进制数
'f'          --  结果被格式化为十进制普通表示方式
'g', 'G'    --  根据具体情况,自动选择用普通表示方式还是科学计数法方式
'a', 'A'    --   结果被格式化为带有效位数和指数的十六进制浮点数

例子:

System.out.println(String.format("%1$+f", -345243.432)); 

输出内容:-345243.432000


System.out.println(String.format("%1$+.2f", -345243.436)); 

输出内容:-345243.44


详解:

1. 在这串参数中,除了%[index]$[标识][最小宽度]转换方式 这一部分的内容用于设定输出格式外,其他的字符都会被输出。

2. 这串参数内没有被 %index提到的参数的都不会被输出,index从1开始数起。

3. %跟着index,两者缺一不可。

4. $后面跟着标识,可以连续跟几个标识,但不可有$没有标识。

5. 转换方式不可省略。

6. %是转意符

7.  . 后跟精度,两者必须同时出现,若没有,默认值是小数点后6位。超出设定精度,自动进行四舍五入。



你可能感兴趣的:(Java string.format 控制整数与浮点数总结)