我需要在 SQL Server 中存储多种货币。我知道 SQL 不支持所有不同类型的货币(除非我将其存储为字符串,但我不想这样做)。
我的想法是将所有值从它们的货币格式转换为标准 double 值并存储它。然后在显示时根据文化信息重新格式化即可。但是,我尝试过做一些事情,例如
var cultureInfo = new System.Globalization.CultureInfo("en-US");
double plain = return Double.Parse("$20,000.00", cultureInfo);
这似乎永远都行不通,它总是抛出一个 FormatException
。即使删除货币符号并仅根据数字尝试执行此操作也会做同样的事情。这只是一个示例,我想支持几乎所有类型的货币。
是否有一种标准方法可以剥离货币并获得 double 值?
最佳答案
我认为这应该可行:
double.Parse(currencyValue, NumberStyles.AllowCurrencySymbol | NumberStyles.Currency);
在这里您可以看到更多关于 NumberStyles 的信息.
编辑:如果有人在没有查看其他答案/评论的情况下看到这个答案,这个答案回答了所写的问题,但是将货币存储为 double
不是一个好主意,它会更好用decimal相反。
关于c# - 将任何货币字符串转换为 double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2753701/