如何接受“$1,250.00”之类的字符串并将其转换为 C# 中的小数?
我只是做一个替换(“$”,“”)和(“,”,“”)还是有不同的方式我应该处理这种输入?
您是否尝试过使用 AllowCurrencySymbol 选项(和其他支持选项)的 Decimal.Parse?
var d = Decimal.Parse(input,
NumberStyles.AllowCurrencySymbol |
NumberStyles.AllowDecimalPoint |
NumberStyles.AllowThousands);
现在格式化:)
decimal val = Decimal.Parse(
Value.Replace(" ", ""),
NumberStyles.AllowThousands
| NumberStyles.AllowDecimalPoint
| NumberStyles.AllowCurrencySymbol
);
我只是做一个
Replace("$", "")
和Replace(",", "")
[?]
不。一方面,这样的代码维护起来并不有趣。其次,“$”不是世界上唯一的货币符号,“,”也不是唯一的千位分隔符。也就是说,您正在考虑的代码使全球化问题变得困难。
[我]我应该以不同的方式处理这种输入吗?
是的。Decimal.Parse
与 一起使用NumberStyles.Currency
:
string s = "$1,250.00";
decimal d = decimal.Parse(s, NumberStyles.Currency);
这应该可以解决问题:
string money = "$1,250.00";
money = money.Replace('$',' ');
decimal test = Convert.ToDecimal(money);