Delphi/400で数値を書式設定した文字列にするには、FormatFloat関数を利用します。
数値で保持しているデータを、0詰めや、小数点の定義、金額の表示のような
3ケタ区切りのカンマを付けた文字列にするなど、様々な書式に変換することができます。
また、IBMiでは日付を8ケタの数値形式で保存している場合が多いため、
FormatFloat関数を利用して、日付形式の文字列にする場合にもよく利用されます。
FormatFloat関数
書式を指定して数値を文字列に変換する。
function FormatFloat(const Format:string, Value:Extended):string;
・第1引数 string型:書式化文字列
・第2引数 Extended型:文字列に変換する数値
(公式ドキュメント)
System.SysUtils.FormatFloat - RAD Studio API Documentation
第一引数には、様々な書式指定子が設定できます。
[0]は、その桁の値の数字か、値がない場合には、0が代わりに入ります。例えば、0詰め等に利用します。
[#]を指定すると、その桁の値がある場合に数字が入りますが、ない場合には何も表示されません。
例) [0]と[#]の違いの例
Edit1.Text := FormatFloat('#####', value);
valueが1234 結果 -> 1234
valueが0 結果 -> [なにも表示されません]
Edit2.Text := FormatFloat('00000', value);
valueが1234 結果 -> 01234
valueが0 結果 -> 00000
Edit3.Text := FormatFloat('####0', value)
valueが1234 結果 -> 1234
valueが0 結果 -> 0
その他にも、以下のような書式にすることもできます。
例) 金額などカンマ区切りで表示する例
Edit1.Text := FormatFloat('0,', 1234);
結果 -> 1,234
例) 小数第2位まで表示する例
Edit1.Text := FormatFloat('0.00', 123.4);
結果 -> 123.40
例) 数値8桁の値を日付形式(0000/00/00)に表示する例
Edit1.Text := FormatFloat('0000/00/00', 20120910);
結果 -> 2012/09/10
例) 書式に固定文字を含める例( '' または "" で囲みます)
Edit1.Text := FormatFloat('"#"00', 5);
結果 -> #05
FormatFloat関数では、正の値、負の値、および 0ごとに、異なる書式を指定することもできます。
書式を分けるには、第1引数の書式文字列を ; (セミコロン)で区切り、セクションを分けます。
例えば、セクションが1つの場合には、書式文字列はすべての数に適用されます。
FormatFloat('すべての値', value);
セクションが2つの場合には、第1セクションを正の値および0に適用し、第2セクションは負の値に適用されます。
FormatFloat('正の値および0;負の値', value);
セクションが3つの場合には、第1セクションは正の数に、第2セクションは負の値に、第3セクションは 0に適用されます。
FormatFloat('正の値;負の値;0', value);
例) セクションを3つ設定した場合の例
Edit1.Text := FormatFloat('0.00;▲0.00;ZERO', value);
valueが 123 正の値の場合 結果 -> 123.00
valueが -123 負の値の場合 結果 -> ▲123.00
valueが 0 の場合 結果 -> ZERO
例のようなEdit等のコンポーネント以外にも、同様の使い方ができます。
(数値フィールドのDisplayFormatプロパティなども同様に設定できます。)
数値の書式を設定したい場合に、FormatFloat関数をご利用ください。
(ミガロ.情報マガジン「MIGARO News!!」Vol.142 2012年9月号より)