var i : integer;
i := 1234567;
鉴于上述情况,我希望输出字符串"1,234,567"(假设使用英国本地化)。IntToStr只会给我"1234567"。我确信有一种简洁的方法来实现这个目标,但我找不到...
var i : integer;
i := 1234567;
试试使用格式化函数。
Label1.Caption := Format('%.0n', [i + 0.0]);
或者,如果您需要线程安全,或者希望确保使用系统默认区域设置,或者想要指定一个区域设置:
或者,如果您需要线程安全,或者希望确保使用系统默认语言环境,或者想要指定一个语言环境:
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;
参见此帖子以获取有关格式设置/区域设置的更完整讨论。
s := 格式化浮点数('#,##0', i);
我有这个函数来完成它,其中d表示十进制数:
function dn(i: integer): string;
begin
result := format('%.0n', [i.ToDouble])
end;
Format('%n', [12345.678]);
stringreplace(format('%n',[1234567.0]),'.00','',[]);