一尘不染

将任何货币字符串转换为双精度

c#

我需要在SQL Server中存储多种货币。我知道SQL不会支持所有不同类型的货币(除非我将其存储为字符串,但我不想这样做)。

我的想法是将所有值从其货币格式转换为标准的double并存储。然后在显示时仅根据区域性信息重新格式化。但是,我尝试做例如

var cultureInfo = new System.Globalization.CultureInfo("en-US");
double plain = return Double.Parse("$20,000.00", cultureInfo);

这似乎从来没有奏效,它总是抛出一个FormatException。即使删除货币符号并仅凭数字尝试执行此操作也可以完成相同的操作。这只是一个例子,我想支持几乎所有类型的货币。

是否有一种剥离货币并将价值翻倍的标准方法?


阅读 355

收藏
2020-05-19

共1个答案

一尘不染

我认为这应该工作:

double.Parse(currencyValue, NumberStyles.Currency);

在这里,您可以了解有关NumberStyles的更多信息。

编辑:如果有人在没有其他答案/评论的情况下看到此答案,则此答案以书面形式回答了该问题,但将货币存储为a
double不是一个好主意,最好使用小数代替。

2020-05-19