我正在尝试从Double获取一个10,000.00

aProductData.BuyPriceHT := 10000;
BuyPriceHTEdit.Text := FormatFloat('#,###.#0', aProductData.BuyPriceHT, FCurrencyFormat);
aProductData.BuyPriceHT := StrToFloat(BuyPriceHTEdit.Text, FCurrencyFormat); <-- error here


其中aProductData.BuyPriceHTDouble

FCurrencyFormat := TFormatSettings.Create('en-US');


注意:对于打算使用DecimalsInt64类型将币种存储在db中的建议的好伙伴。
我已经做过,只是它仍然困扰着我为什么它不起作用。

最佳答案

StrToFloat的文档中:


字符串中不允许使用千位分隔符和货币符号。


一般来说,您可以用多种不同的方式来写数字,日期和时间,而又不想将字符串(文本表示形式)转换为此类值。

通常,您确保始终以数字形式存储和传输此类值(例如,作为整数,浮点数或此类值的记录),并且仅在将其显示在GUI中时才将其转换为文本表示形式或写入文本文件。

如果您需要以文本形式存储或传输它,请使用严格定义的格式。然后,您可以编写自己的转换器,毫无疑问地解释该特定格式。

10-08 11:09