printfを使って書式を整えるとき、いちいち「%」の後ろは何だっけ?とか桁数指定はどうやるんだっけ?とか調べている俺の現実があるので、まとめました。今回はlongのみです。
以下のパターンで実際の書式の与え方と出力のされ方を見てみます。
※「桁数指定(8桁)」とは、[%8d]の[8]の部分を指定するかどうかです。
※「指定数値の桁数」とは、printf文の引数に与える数値の桁数です。(5桁、7桁、11桁で試しています。)
No | 桁数指定(8桁) | 指定数値の桁数 | 指定数値の正負 | 前埋め | カンマ区切り |
---|---|---|---|---|---|
1 | なし | 5 | 正 | - | なし |
2 | なし | 7 | 正 | - | なし |
3 | なし | 11 | 正 | - | なし |
4 | なし | 5 | 負 | - | なし |
5 | なし | 7 | 負 | - | なし |
6 | なし | 11 | 負 | - | なし |
7 | なし | 5 | 正 | - | あり |
8 | なし | 7 | 正 | - | あり |
9 | なし | 11 | 正 | - | あり |
10 | なし | 5 | 負 | - | あり |
11 | なし | 7 | 負 | - | あり |
12 | なし | 11 | 負 | - | あり |
13 | あり | 5 | 正 | スペース | なし |
14 | あり | 7 | 正 | スペース | なし |
15 | あり | 11 | 正 | スペース | なし |
16 | あり | 5 | 負 | スペース | なし |
17 | あり | 7 | 負 | スペース | なし |
18 | あり | 11 | 負 | スペース | なし |
19 | あり | 5 | 正 | 0 | なし |
20 | あり | 7 | 正 | 0 | なし |
21 | あり | 11 | 正 | 0 | なし |
22 | あり | 5 | 負 | 0 | なし |
23 | あり | 7 | 負 | 0 | なし |
24 | あり | 11 | 負 | 0 | なし |
25 | あり | 5 | 正 | スペース | あり |
26 | あり | 7 | 正 | スペース | あり |
27 | あり | 11 | 正 | スペース | あり |
28 | あり | 5 | 負 | スペース | あり |
29 | あり | 7 | 負 | スペース | あり |
30 | あり | 11 | 負 | スペース | あり |
31 | あり | 5 | 正 | 0 | あり |
32 | あり | 7 | 正 | 0 | あり |
33 | あり | 11 | 正 | 0 | あり |
34 | あり | 5 | 負 | 0 | あり |
35 | あり | 7 | 負 | 0 | あり |
36 | あり | 11 | 負 | 0 | あり |
プログラムです。
public static void main(String[] args) { final long DIGIT_5 = 12345L; final long DIGIT_7 = 1234567L; final long DIGIT_11 = 12345678901L; final long DIGIT_5_M = -12345L; final long DIGIT_7_M = -1234567L; final long DIGIT_11_M = -12345678901L; int no = 1; // No1 System.out.printf("No%d:[%d]%n", no++, DIGIT_5); // No2 System.out.printf("No%d:[%d]%n", no++, DIGIT_7); // No3 System.out.printf("No%d:[%d]%n", no++, DIGIT_11); // No4 System.out.printf("No%d:[%d]%n", no++, DIGIT_5_M); // No5 System.out.printf("No%d:[%d]%n", no++, DIGIT_7_M); // No6 System.out.printf("No%d:[%d]%n", no++, DIGIT_11_M); // No7 System.out.printf("No%d:[%,d]%n", no++, DIGIT_5); // No8 System.out.printf("No%d:[%,d]%n", no++, DIGIT_7); // No9 System.out.printf("No%d:[%,d]%n", no++, DIGIT_11); // No10 System.out.printf("No%d:[%,d]%n", no++, DIGIT_5_M); // No11 System.out.printf("No%d:[%,d]%n", no++, DIGIT_7_M); // No12 System.out.printf("No%d:[%,d]%n", no++, DIGIT_11_M); // No13 System.out.printf("No%d:[%8d]%n", no++, DIGIT_5); // No14 System.out.printf("No%d:[%8d]%n", no++, DIGIT_7); // No15 System.out.printf("No%d:[%8d]%n", no++, DIGIT_11); // No16 System.out.printf("No%d:[%8d]%n", no++, DIGIT_5_M); // No17 System.out.printf("No%d:[%8d]%n", no++, DIGIT_7_M); // No18 System.out.printf("No%d:[%8d]%n", no++, DIGIT_11_M); // No19 System.out.printf("No%d:[%08d]%n", no++, DIGIT_5); // No20 System.out.printf("No%d:[%08d]%n", no++, DIGIT_7); // No21 System.out.printf("No%d:[%08d]%n", no++, DIGIT_11); // No22 System.out.printf("No%d:[%08d]%n", no++, DIGIT_5_M); // No23 System.out.printf("No%d:[%08d]%n", no++, DIGIT_7_M); // No24 System.out.printf("No%d:[%08d]%n", no++, DIGIT_11_M); // No25 System.out.printf("No%d:[%,8d]%n", no++, DIGIT_5); // No26 System.out.printf("No%d:[%,8d]%n", no++, DIGIT_7); // No27 System.out.printf("No%d:[%,8d]%n", no++, DIGIT_11); // No28 System.out.printf("No%d:[%,8d]%n", no++, DIGIT_5_M); // No29 System.out.printf("No%d:[%,8d]%n", no++, DIGIT_7_M); // No30 System.out.printf("No%d:[%,8d]%n", no++, DIGIT_11_M); // No31 System.out.printf("No%d:[%,08d]%n", no++, DIGIT_5); // No32 System.out.printf("No%d:[%,08d]%n", no++, DIGIT_7); // No33 System.out.printf("No%d:[%,08d]%n", no++, DIGIT_11); // No34 System.out.printf("No%d:[%,08d]%n", no++, DIGIT_5_M); // No35 System.out.printf("No%d:[%,08d]%n", no++, DIGIT_7_M); // No36 System.out.printf("No%d:[%,08d]%n", no++, DIGIT_11_M); }
結果
No1:[12345] No2:[1234567] No3:[12345678901] No4:[-12345] No5:[-1234567] No6:[-12345678901] No7:[12,345] No8:[1,234,567] No9:[12,345,678,901] No10:[-12,345] No11:[-1,234,567] No12:[-12,345,678,901] No13:[ 12345] No14:[ 1234567] No15:[12345678901] No16:[ -12345] No17:[-1234567] No18:[-12345678901] No19:[00012345] No20:[01234567] No21:[12345678901] No22:[-0012345] No23:[-1234567] No24:[-12345678901] No25:[ 12,345] No26:[1,234,567] No27:[12,345,678,901] No28:[ -12,345] No29:[-1,234,567] No30:[-12,345,678,901] No31:[0012,345] No32:[1,234,567] No33:[12,345,678,901] No34:[-012,345] No35:[-1,234,567] No36:[-12,345,678,901]
EFFECTIVE JAVA 第2版 (The Java Series)
- 作者: Joshua Bloch,柴田芳樹
- 出版社/メーカー: 丸善出版
- 発売日: 2014/03/11
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (10件) を見る