Delphi Format 格式化數字

weixin_34054866發表於2018-08-04

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); //連線字串\

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]).

轉載自:天空的部落格(http://wymsxty.blog.163.com/blog/static/77790858201262963921161/)

相關文章