Java 打印数字格式

2018-02-12 22:10 更新

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);
  }
}

上面的代码生成以下结果。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号