如何使用+和 - 格式化Delphi格式的数字

ble*_*tin 4 delphi numbers string-formatting

使用Delphi,有没有办法在整数上使用Format函数时强制执行符号输出?对于正数,应使用'+'(加号)前缀,对于负数a' - '(减号)前缀.在我的情况下,零的处理并不重要(可以有符号前缀或无).

我想避免为每种格式和if-then-else解决方案使用格式辅助函数.

NGL*_*GLN 11

就像David已经评论过的那样,该Format函数没有为此目的提供格式说明符.

如果你真的想要一个单线解决方案,那么我想你可以使用类似的东西:

uses
  Math;
const
  Signs: array[TValueSign] of String = ('', '', '+');
var
  I: Integer;
begin
  I := 100;
  Label1.Caption := Format('%s%d', [Signs[Sign(I)], I]);  // Output: +100
  I := -100;
  Label2.Caption := Format('%s%d', [Signs[Sign(I)], I]);  // Output: -100
Run Code Online (Sandbox Code Playgroud)

但我更喜欢制作一个单独的(库)例程:

function FormatInt(Value: Integer): String;
begin
  if Value > 0 then
    Result := '+' + IntToStr(Value)
  else
    Result := IntToStr(Value);
end;
Run Code Online (Sandbox Code Playgroud)

  • 当输入为-2147483648时,不是调用"Abs",而是给出意想不到的结果,只需将"+"添加到正值,并使用默认输出作为非正值.所以,设置`Signs =('','','+')`然后使用`Format('%s%d',[Signs [Sign(I)],I])`. (6认同)