c# - 将任何货币字符串转换为 double

标签 c# currency cultureinfo

我需要在 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/

相关文章:

c# - 将Windows Media Player添加到C#程序

c# - 使用 lambda 表达式重命名列

python - 将货币对象更改为小数。使用小数实例

php - 使用 PHP 进行货币转换

c# - .NET 本地化失败

c# - 在 WPF 应用程序中全局设置文化 (en-IN)

c# - 我如何声明一个方法然后再定义它?

基于面额的特定价格的算法可能(多)支付的金额

c# - 如何从 CultureInfo 获取没有国家/地区的语言

c# - Asp GridView 在整行上触发 Click 事件