山崎屋の技術メモ

IT業界で働く中でテクノロジーを愛するSIerのシステムエンジニア👨‍💻 | AndroidとWebアプリの二刀流🧙‍♂️ | コードの裏にあるストーリーを綴るブログ執筆者✍️ | 日々進化するデジタル世界で学び続ける探究者🚀 | #TechLover #CodeArtisan、気になること、メモしておきたいことを書いていきます。

java printf 使用例 longバージョン

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)

EFFECTIVE JAVA 第2版 (The Java Series)