【发布时间】:2012-08-14 05:15:42
【问题描述】:
如何在 C# 中将字符串转换为 Decimal(10,2)?
【问题讨论】:
标签: asp.net
如何在 C# 中将字符串转换为 Decimal(10,2)?
【问题讨论】:
标签: asp.net
查看Decimal.TryParse,尤其是当字符串来自用户时。
如果字符串有任何可能无法转换为十进制,您将需要使用TryParse。 TryParse 允许您测试转换是否可以在不引发异常的情况下进行。
你必须小心,因为有些文化使用点作为千位分隔符,逗号作为小数分隔符。
我对安全字符串到十进制转换的建议:
public static decimal parseDecimal(string value)
{
value = value.Replace(" ", "");
if (System.Globalization.CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator == ",")
{
value = value.Replace(".", ",");
}
else
{
value = value.Replace(",", ".");
}
string[] splited = value.Split(System.Globalization.CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator[0]);
if (splited.Length > 2)
{
string r = "";
for (int i = 0; i < splited.Length; i++)
{
if (i == splited.Length - 1)
r += System.Globalization.CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator;
r += splited[i];
}
value = r;
}
return decimal.Parse(value);
}
循环是在字符串同时包含小数和千位分隔符的情况下
【讨论】:
试试:
string test = "123";
decimal test2 = Convert.ToDecimal(test);
//decimal test2 = Decimal.Parse(test);
//decimal test2;
// if (decimal.TryParse(test, out result))
//{ //valid }
//else
//{ //Exception }
labelConverted.Text = test2.toString();
Difference between Convert.ToDecimal(string) & Decimal.Parse(string)
问候
【讨论】: