我有一个以货币格式格式化的值并显示在文本框中。我需要选择它并将其转换为十进制。例如我有$1,633.75
作为字符串,并希望将其转换为十进制,以将其保存在数据库中。
已有问题和一些答案,但他们都建议使用更复杂的UDF等来解决问题。
问题是,为什么我们不能在字符串上使用replace方法来删除逗号(“,”)和“$”并简单地使用decimal.Parse?
说tbAmountPaid是$1,633.75
这样做的缺点是什么:
decimal.Parse(tbAmountPaid.Text.Replace(",","").Replace("$",""))
得到十进制类型1633.75
值?
缺点是硬编码。您永远不会知道文化和编写字符串的格式。字符串本身可能存在多个错误。如果您进行硬编码,最终可能会在代码中出现错误
string value;
decimal number;
NumberStyles style;
CultureInfo provider;
value = "$1,633.75";
style = NumberStyles.Number | NumberStyles.AllowCurrencySymbol;
provider = new CultureInfo("en-US");
number = Decimal.Parse(value, style, provider);
Console.WriteLine("'{0}' converted to {1}.", value, number);
好的,所以你不会问怎么做,你问“为什么不这样做?”......
转过来问题,你觉得你的方法更好吗?