如何在Delphi中使用+和-符号格式化数字

问题描述 投票:0回答:2

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

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

delphi numbers string-formatting
2个回答
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

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

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

-2
投票

他妈的格式功能对于负/正组合来说很糟糕,创建这个的他妈的业余爱好者,我很生气。

这可能会有所帮助,但令人烦恼的是没有那么多格式功能...

系统.SysUtils.FormatFloat

© www.soinside.com 2019 - 2024. All rights reserved.