3

Float をフォーマットするための String Utils ライブラリはありますか

FormatFloat('$0.00', FTotal)

FloatToStrF ?

私は必要なことをすることができました

  '$' + format('%0.2f', [FTotal]);

しかし、それらのルーチンがどこかに存在するかどうか知りたいですか?

4

1 に答える 1

3

基礎となる DWScript コンパイラは、上記のような文字列関数を含むミニ RTL を生成しますFormat(fmt: String; args: array of const): Stringfunction FloatToStr(f : Float; p : Integer = 99): String;また、このコンテキストでも機能するも含まれています。

残念ながら、これらのミニ RTL 関数のドキュメントはまだ少し見栄えがよくありませんが、何がサポートされているかについては、https ://bitbucket.org/egrange/dwscript/wiki/InternalStringFunctions.wiki#!internal-string-functions で確認できます。

内部的には、関数は次の場所にマップされます

function Format(f,a) { a.unshift(f); return sprintf.apply(null,a) }

function FloatToStr(i,p) { return (p==99)?i.toString():i.toFixed(p) }

独自のコードを記述して、任意の文字列形式を処理することもできます。次のようなものを記述できるように、float ヘルパーを記述するのが最善です。

type
  TFloatHelper = helper for Float
    function toMyFormat: String;
  end;

function TFloatHelper.toMyFormat: String;`
begin
  Result := '$' + format('%0.2f', [Self]);
end;

var value = 1.23;
var str = value.toMyFormat;

ただし、これにより、すべての float 値に toMyFormat 拡張機能が追加されます。新しいタイプに制限したい場合は、次のように記述できます。

type
  TMyFloat = Float;

  TFloatHelper = strict helper for TMyFloat
    function toMyFormat: String;
  end;

[...]

これが役立つことを願っています。

于 2016-01-06T10:58:44.450 に答える