【发布时间】:2008-11-17 16:07:57
【问题描述】:
var i : integer;
i := 1234567;
鉴于上述情况,我希望将字符串“1,234,567”作为输出(假设为英国语言环境)。 IntToStr 只给了我“1234567”。我敢肯定有一个单行,但我找不到它......
【问题讨论】:
var i : integer;
i := 1234567;
鉴于上述情况,我希望将字符串“1,234,567”作为输出(假设为英国语言环境)。 IntToStr 只给了我“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;
请参阅this post,了解有关格式/语言环境的更完整讨论
【讨论】:
s := FormatFloat('#,##0', i);
【讨论】:
我有这个功能,其中 d 可能表示十进制数:
function dn(i: integer): string;
begin
result := format('%.0n', [i.ToDouble])
end;
【讨论】:
格式('%n', [12345.678]);
【讨论】:
stringreplace(format('%n',[1234567.0]),'.00','',[]);
【讨论】: