Delphi Format 格式化數字

2022-01-29 04:45:34 字數 2799 閱讀 1013

**:

function format(const format: string; const args: array of const): string;

format字串說明:

"%" [index ":"] ["-"] [width] ["." prec] type

(1) 格式化字串必須以%開頭

(2) [index ":"] 索引指的是args引數列表中要顯示的每一項的序號。比如:args是

['a', 'c'],那麼'a'的索引就是0,而'c'的索引就是1,而且由於只有

兩項,所以就不會出現大於1的索引值。

format('%2:s %1:s %0:s', ['1st', '2nd', '3rd']);

結果:'3rd 2nd 1st'

(3) ["-"] 這個識別符號的作用是當要顯示的字元的個數少於[width]時,在右邊填補空格;

如果沒加上["-"],則在左邊填補空格。

format('(%4s)', ['aa']); 結果:'  aa'

(4) [width] 寬度

規定了要顯示的字元的個數。如果要顯示的寬度大於[width],則按實際的

寬度來顯示;反之,則填補空格或按要求填補其它字元。

(5) ["." prec] 精度

這是針對浮點數來說的,一般就是指小數點後的位數。

(6) type 型別(見下面)

type的可能值有下列這些:

(1) d 有符號十進位制數

args必須是有符號整型數。如果在格式化字串中還加入了["." prec],則如果args

的長度如果小於給出的精度數時,在前邊填補0;如果大於精度數,按實際長度顯示。

format('(%.3d)', [99]); 結果:'(099)'

(2) u 無符號十進位制數

args必須是無符號整型數。其它特性與d一樣。

(3) e 科學技術法

用科學技術法顯示資料,形式大致如下:'-d.ddd...e+ddd'。

args必須是乙個浮點數。如果是乙個負數,則在最前面顯示乙個符號;在小數點前面

總是顯示一位數字;包括小數點前面的數字在內,數字的個數由["." prec]來確定,

如果沒有指定["." prec],則預設為15位精度。如果實際的數字長度超出了指定的

["." prec],則剛剛超出的那一位數字四捨五入。指數符號e後面總是要跟著加號或

減號,並且在後面至少跟著三位數字。

(4) f 固定的

args必須為浮點數,轉換後的形式大致是'-ddd.ddd...'這樣的。

如果要轉換的是負值,則前面有乙個負號。轉換後的數字,在小數點後面的數字的個數

由["." prec]決定。如果沒有指定["." prec],預設為2位精度。

(5) g 一般的

args必須為浮點數。

被轉換後的數字總是盡可能的簡短(有可能是f或e形式的)。有重要意義的數字的長度

由["." prec]來決定,預設為15位(包括整數字和小數字)。數字前後的0都將被去掉,

小數點也只有在必要的時候才顯示出來。如果小數點左邊的數字小於等於指定的精度,

並且整個值大於或等於0.00001的時候,才使用f的顯示格式,否則使用e(科學技術法)

(6) n args必須是浮點數。形式和f是一樣的,不同的是會顯示千位符,如:1,123,444

(7) m 貨幣型別

args必須是浮點數。能夠顯示貨幣符號,可以通過「控制面板」來設定。小數點後

的位數由["." prec]決定,如果沒用["." prec],則預設2位。

(8) p 指標

args必須是乙個指標值。

將指標轉換為8個字元的十六進製制字串。

(9) s 字串

args必須是字元,字串或pchar值。

如果指定了["." prec],並且字串的實際長度大於["." prec],則從左到右擷取

精度指定數量的字串,其餘的刪除。

(10) x 十六進製制

args必須是乙個整型數。

如果使用了["." prec],不足部分要用0補齊。

注意:[index ":"] [width] ["." prec]可以使用這樣的格式:

format('%*.*f', [8, 2, 123.456])

等價於:format('%8.2f', [123.456]).

format('x=%d', [12]); //'x=12' //最普通

format('x=%3d', [12]); //'x= 12' //指定寬度

format('x=%f', [12.0]); //'x=12.00' //浮點數

format('x=%.3f', [12.0]); //'x=12.000' //指定小數

format('x=%.*f', [5, 12.0]); //'x=12.00000' //動態配置

format('x=%.5d', [12]); //'x=00012' //前面補充0

format('x=%.5x', [12]); //'x=0000c' //十六進製制

format('x=%1:d%0:d', [12, 13]); //'x=1312' //使用索引

format('x=%p', [nil]); //'x=00000000' //指標

format('x=%1.1e', [12.0]); //'x=1.2e+001' //科學記數法

format('x=%%', ); //'x=%' //得到"%"

s := format('%s%d', [s, i]); //s := s + strtoint(i); //連線字串

delphi Format格式化函式

format是乙個很常用,卻又似乎很煩的方法,本人試圖對這個方法的幫助進行一些翻譯,讓它有乙個完整的概貌,以供大家查詢之用 首先看它的宣告 function format const format string const args array of const string overload 事實...

delphi Format格式化函式

format是乙個很常用,卻又似乎很煩的方法,本人試圖對這個方法的幫助進行一些翻譯,讓它有乙個完整的概貌,以供大家查詢之用 首先看它的宣告 function format const format string const args array of const string overload 事實...

格式化,強調 數值格式化

聚合函式返回的的數值型別的值有個特點就是沒有被格式化。通過前面的帶 sum 聚合函式的示例,我們可以看到這一點 注意合計值 命令,或者在物件檢視器中選中 displayformat 屬性。在上節的示例中,格式化操作是針對一物件或物件內的表示式,在物件內僅有乙個表示式時它還能正常工作,不過當物件內不有...