我們都知道程式有時候需要將數字格式化,那什麼是數位格式化呢?所謂數字格式化,就是按著指定格式得到一個字串。
例如,假設我們希望3.141592最多保留2位小數,那麼得到的格式化字串應當是3.14;若是希望整數123456789按「千」分組,那麼得到的格式化字串應為123,456,789;如果希望數字12.3456保留3位小數,整數部分至少要顯示3位,那麼得到的格式化字串應為012.346。
在JDK 1.5版本之前,程式需要使用java.text套件中的相關類,例如: DecimalFormat類,對數字型資料進行格式化。 JDK 1.5版本提供了更方便的Formatter類,Formatter類別提供了一個和C語言printf函數類似的format方法:
format(格式化模式,值列表)
此方法以「格式化模式」傳回「值清單」的字串表示。
目前,Java已經將format方法作為了String類別的靜態方法,因此,程式可以直接使用String類別呼叫format方法對數字進行格式化。
format方法中的「格式化模式」是一個以雙引號括起的字元序列,也就是字串,該字元序列中的字元由格式符號和普通字元所構成。
例如:輸出結果%d,%f,%d中的%d和%f是格式符號,開始的4個漢字、中間的兩個逗號是普通字符,需要注意的是,不是格式符的都被認為是普通字符,同學可以查閱Java API中的java.util.Formatter類別了解更多的格式符。 format方法傳回的字串就是「格式化模式」中的格式符號被替換為它所得到的格式化結果後的字串,例如:
Strings=String.format(%.2f,3.141592);
那麼s就是3.14 ,因為%.2f對3.141592格式化的結果是3.14。
format方法中的「值列表」是用逗號分隔的變數、常數或表達式。若要確保format方法「格式化模式」中的格式符的數量與「值清單」中所列的值的數量相同,例如:
Strings=String.format(%d元%0.3f公斤%d台,123,456.777888,999);
那麼,s就是123元456.778公斤999台。
format方法預設會以從左到右的順序使用「格式化模式」中的格式符號來格式化「值清單」中對應的值,而「格式化模式」中的普通字元保留原樣,例如,假設int型變數x和double型變數y的值分別是123和3.1415926,那麼對於:
Strings=String.format(由左向右:%d,%.3f,%d,x,y,100);
那麼,s就是由左向右:123,3.142,100。
如果不希望使用預設的順序(從左向右)進行格式化,也可以在格式符號前面加上索引符號:index$,例如,1$表示「值清單」中的第1個,2$表示「值列表」中的第2個,對於:
Strings=String.format(不是由左向右:%2$.3f,%3$d,%1$d,x,y,100);
那麼,s就是不是從左向右:3.142,100,123。
注意:如果準備在「格式化模式」中包含普通的%,在編寫程式碼時需要連續輸入兩個%,例如:
Strings=String.format(%d%%,89);
那麼,s就是89%。