7
var i : integer;

i := 1234567;

鉴于上述情况,我希望将字符串“1,234,567”作为输出(假设为英国语言环境)。IntToStr 只给了我“1234567”。我敢肯定有一个单行,但我找不到它...

4

6 回答 6

21

试试格式化功能。

Label1.Caption := Format('%.0n', [i + 0.0]);
于 2008-11-17T16:24:25.187 回答
11

或者,如果您需要线程安全或想要确保使用系统默认语言环境或想要指定一个:

function FormatIntFromLCID(const AValue: Integer; const LCID: Integer = LOCALE_SYSTEM_DEFAULT): string;
var
  AFormatSettings: TFormatSettings;
begin
  GetLocaleFormatSettings(LCID, AFormatSettings);
  Result := FormatFloat('#,##0',AValue, AFormatSettings);
end;

有关格式/语言环境的更完整讨论,请参阅此帖子

于 2008-11-17T20:57:17.913 回答
6

s := FormatFloat('#,##0', i);

于 2008-11-17T16:23:54.547 回答
0

我有这个功能可以做到这一点,其中 d 可能表示十进制数:

function dn(i: integer): string; 
begin 
  result := format('%.0n', [i.ToDouble]) 
end;
于 2020-05-14T02:40:15.570 回答
-1
stringreplace(format('%n',[1234567.0]),'.00','',[]);
于 2008-11-17T16:36:00.543 回答
-1

格式('%n', [12345.678]);

于 2008-11-17T18:43:01.863 回答