3

如何接受“$1,250.00”之类的字符串并将其转换为 C# 中的小数?

我只是做一个替换(“$”,“”)和(“,”,“”)还是有不同的方式我应该处理这种输入?

4

4 回答 4

20

您是否尝试过使用 AllowCurrencySymbol 选项(和其他支持选项)的 Decimal.Parse?

var d = Decimal.Parse(input, 
  NumberStyles.AllowCurrencySymbol |
  NumberStyles.AllowDecimalPoint |
  NumberStyles.AllowThousands);
于 2009-07-31T03:34:22.563 回答
5

现在格式化:)

decimal val = Decimal.Parse(
    Value.Replace(" ", ""), 
    NumberStyles.AllowThousands 
     | NumberStyles.AllowDecimalPoint 
     | NumberStyles.AllowCurrencySymbol
);

http://www.codeproject.com/KB/cs/Eduardo_Sierra.aspx

于 2009-07-31T03:33:47.790 回答
5

我只是做一个Replace("$", "")Replace(",", "")[?]

不。一方面,这样的代码维护起来并不有趣。其次,“$”不是世界上唯一的货币符号,“,”也不是唯一的千位分隔符。也就是说,您正在考虑的代码使全球化问题变得困难。

[我]我应该以不同的方式处理这种输入吗?

是的。Decimal.Parse与 一起使用NumberStyles.Currency

string s = "$1,250.00";
decimal d = decimal.Parse(s, NumberStyles.Currency);
于 2009-07-31T03:35:54.523 回答
-2

这应该可以解决问题:


      string money = "$1,250.00";
      money = money.Replace('$',' ');
      decimal test = Convert.ToDecimal(money);
于 2009-07-31T03:39:46.623 回答