我正在尝试从Double
获取一个10,000.00
:
aProductData.BuyPriceHT := 10000;
BuyPriceHTEdit.Text := FormatFloat('#,###.#0', aProductData.BuyPriceHT, FCurrencyFormat);
aProductData.BuyPriceHT := StrToFloat(BuyPriceHTEdit.Text, FCurrencyFormat); <-- error here
其中
aProductData.BuyPriceHT
是Double
FCurrencyFormat := TFormatSettings.Create('en-US');
注意:对于打算使用
Decimals
或Int64
类型将币种存储在db中的建议的好伙伴。我已经做过,只是它仍然困扰着我为什么它不起作用。
最佳答案
从StrToFloat
的文档中:
字符串中不允许使用千位分隔符和货币符号。
一般来说,您可以用多种不同的方式来写数字,日期和时间,而又不想将字符串(文本表示形式)转换为此类值。
通常,您确保始终以数字形式存储和传输此类值(例如,作为整数,浮点数或此类值的记录),并且仅在将其显示在GUI中时才将其转换为文本表示形式或写入文本文件。
如果您需要以文本形式存储或传输它,请使用严格定义的格式。然后,您可以编写自己的转换器,毫无疑问地解释该特定格式。