String Utils Library用于格式化Floats?

时间:2016-01-05 14:23:01

标签: smart-mobile-studio

是否有用于格式化Floats的String Utils库

FormatFloat('$ 0.00',FTotal)

FloatToStrF?

我能够做我需要的事情

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

但只是好奇这些例程是否存在于某个地方?

1 个答案:

答案 0 :(得分:3)

底层DWScript编译器产生一个迷你RTL,其中包含字符串函数,如上面提到的Format(fmt: String; args: array of const): String。它还包含function 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) }

您还可以编写自己的代码来处理任何字符串格式。最好的方法是写一个浮动助手,这样你就可以编写类似的东西:

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;

然而,这将为所有浮点值添加toMyFormat扩展。如果要将其限制为新类型,可以编写如下内容:

type
  TMyFloat = Float;

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

[...]

我希望这会有所帮助。