我正在与德尔福2009年,我疯了我的问题,但我得到的答案已过时,因为它不承认在Delphi2009 StrtoFloat。如何将int转换为货币?
我在问如何将一个整数,例如'1900000'转换为'1,900,000'?
我正在与德尔福2009年,我疯了我的问题,但我得到的答案已过时,因为它不承认在Delphi2009 StrtoFloat。如何将int转换为货币?
我在问如何将一个整数,例如'1900000'转换为'1,900,000'?
您也可以使用format命令。由于该格式需要一个实数,因此将整数加0.0会将其变为扩展类型。
Result := Format('%.0m',[intValue + 0.0]));
这将正确处理负数并为用户区域设置添加货币符号。如果不需要货币符号,则设置CurrencyString:='';在通话之前,并在之后恢复。
SavedCurrency := CurrencyString;
try
CurrencyString := '';
Result := Format('%.0m',[intValue + 0.0]));
finally
CurrencyString := SavedCurrency;
end;
要强制逗号,只需设置ThousandSeparator:=',';
CurrencyString := '!';
ThousandSeparator := '*';
Result := Format('%.0m',[-1900000.0]);
// Returns (!1*900*000) in my locale.
掩码中的“句点”决定了浮点数的小数部分将如何显示。因为之后我传递了0,所以它告诉format命令不包含任何小数部分。 Format('%。3m',[4.0])的格式命令将返回$ 4.000。
你是我的德尔福偶像,你知道的!但是这次我遇到了一个问题,它不会显示','逗号。而是仅仅是一个空格。我在C#中也遇到了这个问题,而我在C#中工作时曾询问过它。人们告诉我它有一个currencyFormat问题,我记得有一种方法可以在C#中完成。不知道delphi.I只需要逗号,它不必显示任何其他内容,并且知道这不会在每种货币类型上工作,您能否提出一些可以用逗号的东西?先谢谢你!希望我能投更多! – 2009-08-07 20:40:02
感谢您的编辑,但我误解如何设置ThousandSeparator.If我使用'%,0m'它会引发异常。用极端的例子编辑了 – 2009-08-07 20:44:56
。 – skamradt 2009-08-07 20:46:31
我目前使用的:
function FloatToCurrency(const f: double): string;
begin
Result := FormatFloat('#,###.##;1;0', f);
end;
它不会与负数的工作,但因为你需要的货币,你不会有这个问题。
@ Aldo,谢谢你的回答。我的代码:'sLabel1.Caption:= FormatFloat('#,###。##; 1; 0',StrToCurr(IntToStr(1900000)));'它显示'1 900 000'逗号在哪里? – 2009-08-07 20:23:06
编辑:我使用StrToCurr(IntToStr()),因为我在我的应用程序中使用的数字是Int64 – 2009-08-07 20:25:11
除了作为显示期间的转换之外,货币应该*永远*不是浮动。 – 2009-08-07 20:27:10
这不会是一个格式化的东西,delphi应该有一些类型的支持将数字格式化为字符串,你想要的方式是什么?除了更新版本的delphi更符合.net框架?
Delphi 2009是用于原生win32开发的。delphi prism用于净。 – 2009-08-07 20:24:14
您可以直接通过转让分配整型货币,编译器会做转换为你:
var
Int : Integer;
Cur : Currency;
begin
Int := 1900000;
Cur := Int;
ShowMessage(CurrToStr(Cur)); // 1900000
ShowMessage(Format('%m', [Cur]); // 1,900,000.00 in US/UK/NZ/AU etc, "1 900 000,00" in Spain etc.
ShowMessage(Format('%.0m', [Cur]); // 1,900,000 in US/UK/NZ/AU etc, "1 900 000" in Spain etc.
end;
如果你想使用逗号西班牙语区域设置设置ThousandSeparator:=“”;或使用扩展CurrToStrF(金额,ffCurrency,小数,FormatSettings))版本。
带有FormatSettings的版本也是线程安全的。注意:您不能直接将Currency分配给Integer,您需要使用Int:= Trunc(Cur),但由于它首先转换为浮动(除非编译器做了一些聪明的事情),因此效率不高。
StrToFloat仍然包含在Delphi 2009中的SysUtils单元中。 http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/[email protected] – stukelly 2009-08-07 23:19:02
你如何暴露一个问题? – 2009-08-17 09:38:38