Java 打印數(shù)字格式

2018-02-12 22:10 更新

Java格式 - Java 打印數(shù)字格式


Java 打印支持兩種類型的數(shù)字格式:

  • 整數(shù)格式化
  • 浮點(diǎn)數(shù)格式化

整數(shù)格式化

整數(shù)格式化格式化整數(shù)。

它可以格式化byte, Byte, short, Short, int, Integer, long, Long和BigInteger的值。

以下列表說明了格式字符。

  • d
    以特定于語言環(huán)境的十進(jìn)制整數(shù)格式化參數(shù)。
    “#”標(biāo)志不能用于此轉(zhuǎn)換。
  • o
    將參數(shù)格式化為基本8整數(shù)。
    如果使用“?!睒?biāo)志,輸出從0開始。
    “(”,“+”,“”和“,”標(biāo)志不能用于此轉(zhuǎn)換。
  • x或大寫變量X
    將參數(shù)格式化為基本16整數(shù)。
    如果使用“#”標(biāo)志,則輸出以“0x”開頭。
    如果'X'與'#'標(biāo)志一起使用,輸出以“0X”開頭。
    '(','+',''和','標(biāo)志不能與byte,Byte,short,short,int,Integer,long和Long數(shù)據(jù)類型的參數(shù)一起使用。
    ','標(biāo)志不能與BigInteger數(shù)據(jù)類型的參數(shù)一起使用。

用于整數(shù)格式化的格式說明符的一般語法如下:

%<argument_index$><flags><width><conversion>

格式說明符的精度不適用于整數(shù)格式化。

下面的代碼演示了使用帶有各種標(biāo)志的“d"轉(zhuǎn)換來格式化整數(shù):

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

  }
}

上面的代碼生成以下結(jié)果。

例子

當(dāng) o x 與byte, Byte, short, Short, int, Integer, long, 和 Long 數(shù)據(jù)類型的負(fù)參數(shù)一起使用時,參數(shù)值首先通過向其加上數(shù)字2N轉(zhuǎn)換為無符號數(shù), 是值的位數(shù)。 轉(zhuǎn)換不會轉(zhuǎn)換負(fù)BigInteger參數(shù)。

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"轉(zhuǎn)換的更多示例參數(shù)類型:

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

  }
}

上面的代碼生成以下結(jié)果。

浮點(diǎn)數(shù)格式化

浮點(diǎn)數(shù)字格式處理整數(shù)部分和數(shù)字的分?jǐn)?shù)部分。

浮點(diǎn)數(shù)格式化可應(yīng)用于float,F(xiàn)loat,double,Double和BigDecimal數(shù)據(jù)類型的格式值。

以下列表包含用于格式化浮點(diǎn)數(shù)的轉(zhuǎn)換。

  • e和大寫變量E
    使用特定于語言環(huán)境的科學(xué)記數(shù)法格式化參數(shù)。
    輸出有一個數(shù)字,后跟小數(shù)分隔符和指數(shù)部分。
    例如,如果精度為6,則1234.567將格式化為1.234567e + 03。
    精度設(shè)置小數(shù)分隔符后的位數(shù)。
    組分隔符標(biāo)記','不能與此轉(zhuǎn)換一起使用。
  • g和大寫變量G
    使用特定于語言環(huán)境的一般科學(xué)記數(shù)法格式化參數(shù)。
    格式化可以作為e或f轉(zhuǎn)換。
    如果舍入后的值大于或等于10-4但小于10precision,則將該值格式化為f轉(zhuǎn)換。
    如果舍入后的值小于10-4或大于或等于10precision,則將該值格式化為“e”轉(zhuǎn)換。
    默認(rèn)情況下,使用精度6。
  • f
    以特定于語言環(huán)境的十進(jìn)制格式格式化參數(shù)。
    精度是小數(shù)分隔符后的位數(shù)。
    該值根據(jù)精度舍入。
  • a和大寫變量A
    以十六進(jìn)制指數(shù)形式格式化參數(shù)。 此轉(zhuǎn)換不適用于BigDecimal類型。

浮點(diǎn)數(shù)格式化的一般語法是

%<argument_index$><flags><width><.precision><conversion>

精度具有不同的含義取決于轉(zhuǎn)換字符。

  • 默認(rèn)情況下,precision的值為6。
  • 對于“e”和“f”轉(zhuǎn)換,精度是小數(shù)分隔符后的位數(shù)。
  • 對于“g”轉(zhuǎn)換,精度是舍入后所得到的幅度中的總位數(shù)。
  • 精度不適用于'a'轉(zhuǎn)換。

以下代碼段顯示了如何使用默認(rèn)精度(6為格式)格式化浮點(diǎn)數(shù):

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

  }
}

上面的代碼生成以下結(jié)果。

例4

以下代碼顯示了在浮點(diǎn)數(shù)格式中使用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);

  }
}

上面的代碼生成以下結(jié)果。

例5

如果浮點(diǎn)轉(zhuǎn)換的參數(shù)值為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);
  }
}

上面的代碼生成以下結(jié)果。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號