Java 打印数字格式
Java格式 - Java 打印数字格式
Java 打印支持两种类型的数字格式:
- 整数格式化
- 浮点数格式化
整数格式化
整数格式化格式化整数。
它可以格式化byte, Byte, short, Short, int, Integer, long, Long和BigInteger的值。
以下列表说明了格式字符。
d
以特定于语言环境的十进制整数格式化参数。
“#”标志不能用于此转换。o
将参数格式化为基本8整数。
如果使用“#”标志,输出从0开始。
“(”,“+”,“”和“,”标志不能用于此转换。x
或大写变量X
将参数格式化为基本16整数。
如果使用“#”标志,则输出以“0x”开头。
如果'X'与'#'标志一起使用,输出以“0X”开头。
'(','+',''和','标志不能与byte,Byte,short,short,int,Integer,long和Long数据类型的参数一起使用。
','标志不能与BigInteger数据类型的参数一起使用。
用于整数格式化的格式说明符的一般语法如下:
%<argument_index$><flags><width><conversion>
格式说明符的精度不适用于整数格式化。
下面的代码演示了使用带有各种标志的“d"转换来格式化整数:
public class Main { public static void main(String[] args) { System.out.printf(""%d" %n", 1234); System.out.printf(""%6d" %n", 1234); System.out.printf(""%-6d" %n", 1234); System.out.printf(""%06d" %n", 1234); System.out.printf(""%(d" %n", 1234); System.out.printf(""%(d" %n", -1234); System.out.printf(""% d" %n", 1234); System.out.printf(""% d" %n", -1234); System.out.printf(""%+d" %n", 1234); System.out.printf(""%+d" %n", -1234); } }
上面的代码生成以下结果。
例子
当 o
和 x
与byte, Byte, short, Short, int, Integer, long, 和 Long 数据类型的负参数一起使用时,参数值首先通过向其加上数字2N转换为无符号数, 是值的位数。 转换不会转换负BigInteger参数。
public class Main { public static void main(String[] args) { byte b1 = 1; byte b2 = -2; System.out.printf("%o\n", b1); System.out.printf("%o", b2); } }
例2
以下代码段显示了int和BigInteger的“o"和“x"转换的更多示例参数类型:
import java.math.BigInteger; public class Main { public static void main(String[] args) { System.out.printf("%o %n", 1234); System.out.printf("%o %n", -1234); System.out.printf("%o %n", new BigInteger("1234")); System.out.printf("%o %n", new BigInteger("-1234")); System.out.printf("%x %n", 1234); System.out.printf("%x %n", -1234); System.out.printf("%x %n", new BigInteger("1234")); System.out.printf("%x %n", new BigInteger("-1234")); System.out.printf("%#o %n", 1234); System.out.printf("%#x %n", 1234); System.out.printf("%#o %n", new BigInteger("1234")); System.out.printf("%#x %n", new BigInteger("1234")); } }
上面的代码生成以下结果。
浮点数格式化
浮点数字格式处理整数部分和数字的分数部分。
浮点数格式化可应用于float,Float,double,Double和BigDecimal数据类型的格式值。
以下列表包含用于格式化浮点数的转换。
e
和大写变量E
使用特定于语言环境的科学记数法格式化参数。
输出有一个数字,后跟小数分隔符和指数部分。
例如,如果精度为6,则1234.567将格式化为1.234567e + 03。
精度设置小数分隔符后的位数。
组分隔符标记','不能与此转换一起使用。g
和大写变量G
使用特定于语言环境的一般科学记数法格式化参数。
格式化可以作为e或f转换。
如果舍入后的值大于或等于10-4但小于10precision,则将该值格式化为f转换。
如果舍入后的值小于10-4或大于或等于10precision,则将该值格式化为“e”转换。
默认情况下,使用精度6。f
以特定于语言环境的十进制格式格式化参数。
精度是小数分隔符后的位数。
该值根据精度舍入。a
和大写变量A
以十六进制指数形式格式化参数。 此转换不适用于BigDecimal类型。
浮点数格式化的一般语法是
%<argument_index$><flags><width><.precision><conversion>
精度具有不同的含义取决于转换字符。
- 默认情况下,precision的值为6。
- 对于“e”和“f”转换,精度是小数分隔符后的位数。
- 对于“g”转换,精度是舍入后所得到的幅度中的总位数。
- 精度不适用于'a'转换。
以下代码段显示了如何使用默认精度(6为格式)格式化浮点数:
public class Main { public static void main(String[] args) { System.out.printf("%e %n", 10.2); System.out.printf("%f %n", 10.2); System.out.printf("%g %n", 10.2); System.out.printf("%e %n", 0.000001234); System.out.printf("%f %n", 0.000001234); System.out.printf("%g %n", 0.000001234); System.out.printf("%a %n", 0.000001234); } }
上面的代码生成以下结果。
例4
以下代码显示了在浮点数格式中使用width和precision的影响:
public class Main { public static void main(String[] args) { System.out.printf("%.2e %n", 123456.789); System.out.printf("%.2f %n", 123456.789); System.out.printf("%.2g %n", 123456.789); System.out.printf(""%8.2e" %n", 123456.789); System.out.printf(""%8.2f" %n", 123456.789); System.out.printf(""%8.2g" %n", 123456.789); System.out.printf(""%10.2e" %n", 123456.789); System.out.printf(""%10.2f" %n", 123456.789); System.out.printf(""%10.2g" %n", 123456.789); System.out.printf(""%-10.2e" %n", 123456.789); System.out.printf(""%-10.2f" %n", 123456.789); System.out.printf(""%-10.2g" %n", 123456.789); System.out.printf(""%010.2e" %n", 123456.789); System.out.printf(""%010.2f" %n", 123456.789); System.out.printf(""%010.2g" %n", 123456.789); } }
上面的代码生成以下结果。
例5
如果浮点转换的参数值为NaN或Infinity,则输出分别包含字符串“NaN”和“Infinity”。
public class Main { public static void main(String[] args) { System.out.printf("%.2e %n", Double.NaN); System.out.printf("%.2f %n", Double.POSITIVE_INFINITY); System.out.printf("%.2g %n", Double.NEGATIVE_INFINITY); System.out.printf("%(f %n", Double.POSITIVE_INFINITY); System.out.printf("%(f %n", Double.NEGATIVE_INFINITY); } }
上面的代码生成以下结果。
更多建议: