在Delphi中如何使用当前区域设置格式化整数

7
var i : integer;

i := 1234567;

鉴于上述情况,我希望输出字符串"1,234,567"(假设使用英国本地化)。IntToStr只会给我"1234567"。我确信有一种简洁的方法来实现这个目标,但我找不到...
6个回答

21

试试使用格式化函数。

Label1.Caption := Format('%.0n', [i + 0.0]);

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;

参见此帖子以获取有关格式设置/区域设置的更完整讨论。


6

s := 格式化浮点数('#,##0', i);


0

我有这个函数来完成它,其中d表示十进制数:

function dn(i: integer): string; 
begin 
  result := format('%.0n', [i.ToDouble]) 
end;

-1

Format('%n', [12345.678]);


-1
stringreplace(format('%n',[1234567.0]),'.00','',[]);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接