String.format輸出格式化的字符串

String.format輸出格式化的字符串spa

格式說明符的語法以下:

中括號標註([])的爲可選參數.code

常規類型、字符類型和數值類型的格式說明符的語法以下:orm

%[argument_index$][flags][width][.precision]conversion 對象

%[參數索引][標識集][輸出寬度][.限制字符]標明如何格式化字符索引

 

可選的 argument_index 是一個十進制整數,用於代表參數在參數列表中的位置。第一個參數由 "1$" 引用,第二個參數由 "2$" 引用,依此類推。ci

可選 flags是修改輸出格式的字符集。有效標誌集取決於轉換類型。字符串

可選 width是一個非負十進制整數,代表要向輸出中寫入的最少字符數。(最終該整數轉化的字符串最少包含多少位數字 )io

可選 precision是一個非負十進制整數,一般用來限制字符數。特定行爲取決於轉換類型。(保留精度)form

所需 conversion是一個代表應該如何格式化參數的字符。給定參數的有效轉換集取決於參數的數據類型。test

用來表示日期和時間類型的格式說明符的語法以下:

%[argument_index$][flags][width]conversion 

conversion 是一個由兩字符組成的序列。第一個字符是 't' 或 'T'。第二個字符代表所使用的格式。

 

格式化輸出整數

%[argument_index$][flags][width][.precision]conversion

標識flags: 

  1. '-'    在最小寬度內左對齊,不能夠與「用0填充」同時使用 

  2. '#'   只適用於8進制和16進制,8進制時在結果前面增長一個0,16進制時在結果前面增長0x 

  3. '+'   結果老是包括一個符號(通常狀況下只適用於10進制,若對象爲BigInteger才能夠用於8進制和16進制) 

  4. '  '  正值前加空格,負值前加負號(通常狀況下只適用於10進制,若對象爲BigInteger才能夠用於8進制和16進制) 

  5. '0'   結果將用零來填充 

  6. ','   只適用於10進制,每3位數字之間用「,」分隔 

  7. '('   若參數是負數,則結果中不添加負號而是用圓括號把數字括起來(同‘+’具備一樣的限制) 

示例代碼:

int number1 = 5;
int number2 = 0;
int number3 = -12;
System.out.println("\n------------------  方法 1  ------------\n");
DecimalFormat format = new DecimalFormat("0000");
System.out.println(format.format(number1));
System.out.println(format.format(number2));
System.out.println(format.format(number3));

System.out.println("\n------------------  方法 2  ------------\n");
// 0 表明前面補充0   
// 4 表明長度爲4   
// d 表明參數爲正數型

// 輸出格式化的字符串
System.out.println(String.format("%d", number1));
System.out.println(String.format("%04d", number1));
System.out.println(String.format("%04d", number2));
System.out.println(String.format("%04d", number3));
System.out.println(String.format("%04d;%09d", number3, number3));
System.out.println(String.format("%04d%09d", number3, number3));
System.out.println(String.format("%2$08d", -3123, -5566));  //引用第三個參數

運行結果:

------------------  方法 1  ------------

0005

0000

-0012

------------------  方法 2  ------------

5

0005

0000

-012

-012;-00000012

-012-00000012

-0005566

 

格式化輸出浮點數

%[argument_index$][flags][width][.precision]conversion

標識flags: 

  1. '-'    在最小寬度內左對齊,不能夠與 用0填充 同時使用

  2. '+'    結果老是包括一個符號 

  3. '  '    正值前加空格,負值前加負號 

  4. '0'    結果將用零來填充 

  5. ','    每3位數字之間用「,」分隔(只適用於fgG的轉換) 

  6. '('    若參數是負數,則結果中不添加負號而是用圓括號把數字括起來(只適用於eEfgG的轉換)

@Test
public void test() {
    // 還能夠限制小數點後的位數
    System.out.printf("%.1f; %.3f%n", -756.403f, 7464.232641d);   //輸出後換行
    System.out.println(String.format("%1$011.1f;%2$.3f%n", 756.403f, 7464.232641d));
}

運行結果:

-756.4; 7464.233

000000756.4;7464.233

在第二條輸出語句中,

%1$011.1f

格式說明符 

1$表示選取第一個輸入參數

0表示填充字符

11表示輸出的位數

. 1表示保留一位小數

 

使用DecimalFormat格式化輸出數字

@Test
public void test9887() {
    double pi = 3.1415927;//圓周率
    //取一位整數
    System.out.println(new DecimalFormat("0").format(pi));//3
    //取一位整數和兩位小數
    System.out.println(new DecimalFormat("0.00").format(pi));//3.14
    //取兩位整數和三位小數,整數不足部分以0填補。
    System.out.println(new DecimalFormat("00.000").format(pi));// 03.142
    //取全部整數部分
    System.out.println(new DecimalFormat("#").format(pi));//3
    //以百分比方式計數,並取兩位小數
    System.out.println(new DecimalFormat("#.##%").format(pi));//314.16%

    long c = 299792458;//光速
    //顯示爲科學計數法,並取五位小數
    System.out.println(new DecimalFormat("#.#####E0").format(c));//2.99792E8
    //顯示爲兩位整數的科學計數法,並取四位小數
    System.out.println(new DecimalFormat("00.####E0").format(c));//29.9792E7
    //每三位以逗號進行分隔。
    System.out.println(new DecimalFormat(",###").format(c));//299,792,458
    //將格式嵌入文本
    System.out.println(new DecimalFormat("光速大小爲每秒,###米。").format(c));
}

DecimalFormat 類主要靠 # 和 0 兩種佔位符號來指定數字長度。0 表示若是位數不足則以 0 填充,# 表示只要有可能就把數字拉上這個位置。

============END============

相關文章
相關標籤/搜索