printf與格式化字串

2021-08-31 02:17:09 字數 3526 閱讀 8798

常規型別、字元型別和數值型別的格式

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

日期和時間型別的格式

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

argument_index$

是乙個十進位制整數,用於表明要格式化第幾個引數。第乙個引數由 "1$" 引用,第二個引數由 "2$" 引用,依此類推。

flags

'-'結果將是左對齊的

'#'結果應該使用依賴於轉換型別的替換形式(看例子比較好理解)

'+'結果總是包括乙個符號

'('結果若是負值,則用()括起來

'0'結果用0補充

','結果用逗號分隔(只使用十進位制)

width

是乙個非負十進位制整數,表明要向輸出中寫入的最少字元數,如果小於系統預設字元數,將不起效果

.precision

是乙個非負十進位制整數,表明要向輸出中寫入的最少字元數或者保留多少位小數

conversion

'c', 'c'

結果是乙個 unicode 字元   'c'  返回結果是大寫

'd'結果被格式化為十進位制整數

'o'結果被格式化

為八進位制整數

'x', 'x'

結果被格式化為十六進製制整數  'x'  返回結果是大寫

'e', 'e'

結果被格式化為用電腦科學記數法表示的十進位制數  'e'  返回結果是大寫

'f'結果被格式化為浮點數

'g', 'g'

根據精度和捨入運算後的值,

使用電腦科學記數形式或十進位制格式對結果進行格式化

'a', 'a'

結果被格式化為帶有效位數和指數的十六進製制浮點數

't', 't'

日期和時間轉換字元的字首。請參閱日期/時間轉換。't'  返回結果是大寫

'%'輸出%,其它什麼都沒有

'n'結果為特定於平台的行分隔符

'h'24 小時制的小時,被格式化為帶前導零的兩位數

'i'12 小時制的小時,被格式化為帶前導零的兩位數

'k'24 小時制的小時

'l'12 小時制的小時

'm'小時中的分鐘,被格式化為必要時帶前導零的兩位數

's'分鐘中的秒,被格式化為必要時帶前導零的兩位數

'l'秒中的毫秒,被格式化為必要時帶前導零的三位數 舉例

publicclassstringformat {

publicstaticvoidmain(string args) {

doubled = 1345.678;

string s =

"你好!"

;inti = 1234;

// "%"表示進行格式化輸出,"%"之後的內容為格式的定義。

system.

out.printf(

"%f"

, 1345.678);

//"f"表示格式化輸出浮點數。1345.678-->1345.678000

system.

out.printf(

"%9f"

, 1345.678);

>1345.678000,系統預設為11個字元數,定義9個沒有效果

system.

out.printf(

"%12f"

, 1345.678);

>*1345.678000,注意1前面有乙個空字元,為可**暫用」*」代替

system.

out.printf(

"%12.2f"

, 1345.678);

//2表示小數點後的位數1345.678-->*****1345.68

system.

out.printf(

"%+9.2f"

, 1345.678);

//"+"表示輸出的數帶正負號1345.678-->*+1345.68

system.

out.printf(

"%-9.4f"

, 1345.678);

//"-"表示輸出的數左對齊(預設為右對齊)1345.678-->1345.6780

system.

out.printf(

"%+-9.3f"

, 1345.678);

//"+-"表示輸出的數帶正負號且左對齊。

system.

out.printf(

"%5d"

, 1234);

//"d"表示輸出十進位制整數1234-->*1234

system.

out.printf(

"%o"

, 1234);

//"o"表示輸出八進位制整數1234-->2322

system.

out.printf(

"%x"

, 1234);

//"x"表示輸出十六進製制整數1234-->4d2

system.

out.printf(

"%#x"

, 1234);

//1234-->0x4d2,加上#前面就加上0x

system.

out.printf(

"%s"

, "你好!");

//"s"表示輸出字串你好!-->你好!

system.

out.printf(

"輸出乙個浮點數:%1$f,乙個整數:%2$d,乙個字串:%3$s"

, 1234.567, 1234, "你好!");

// 可以輸出多個變數,注意順序。

system.

out.println(string.format(

"%2$08d"

, -3123, -5566));

// -5566-->-00005566

system.

out.println(string.format(

"%1$9d"

, -31));

// -31-->******-31

system.

out.println(string.format(

"%1$(9d"

, -31));

// -31-->*****(31)

calendar cal = calendar.getinstance();

system.

out.printf(

"%1$tm-%1$te-%1$ty"

, cal);

// cal-->11-21-2010,記得要加上』t』

system.

out.printf(

"%1$th:%1$tm:%1$ts"

,cal);

// cal-->16:01:57,記得要加上』t』

字串 與格式化與基本運算

str hello world print str 0 列印第幾個字元 print str 0 5 列印第乙個到第幾個字元 print str 5 8 左閉右開 print str 5 print str 2 列印從右邊開始第幾個字元 t 橫向製表符 預設4個空格 linux 預設8個空格 n 換行...

printf格式化字元

printf格式化字元 字元 a 浮點數 十六進製制數字和p 記數法 c99 a 浮點數 十六進製制數字和p 記法 c99 c 乙個字元char c 乙個iso寬字元 d 有符號十進位制整數int ld,ld 長整型資料long hd 短整型資料 e 浮點數 e 記數法 e 浮點數 e 記數法 f ...

字串的轉義與格式化佔位符

轉義格式 意義 單引號 雙引號 反斜槓 n換行 r返回游標至行首 f換頁 t水平製表符 v重直製表符 b倒退 0空字元,字元值為零 0oo oo為兩位八進位制表示的字元 xx為兩位十六進製制表示的字元 u x unicode 16的十六進製制表示的字元 u xx unicode 32的十六進製制表示...