如何将字符串转换为十进制
本文关键字:十进制 转换 字符串 | 更新日期: 2023-09-27 18:00:05
我无法将字符串转换为十进制,这是lblTotal="110,00€"的值我想把它转换成十进制,我该怎么转换?
decimal number;
if( Decimal.TryParse(((Label)e.Item.FindControl("lblTotal")).Text.ToString(), out number))
{
}
如果你不能解析你的字符串,可能会有一些可能性。。
首先,Decimal.TryParse
使用NumberStyles.Number
样式,这不包括Currency
样式。两者都是复合样式。这就是为什么您需要使用另一个重载来指定货币符号和小数分隔符。
其次,默认情况下,您的Decimal.TryParse
使用CurrentCulture
设置。也就是说,您的CurrencySymbol
不是€
和/或NumberDecimalSeparator
不是,
。
作为最佳解决方案,您可以Clone
您的CurrentCulture
,并使用Currency
样式设置这些属性;
var clone = (CultureInfo) CultureInfo.CurrentCulture.Clone();
clone.NumberFormat.CurrencySymbol = "€";
clone.NumberFormat.NumberDecimalSeparator = ",";
decimal number;
if(decimal.TryParse(((Label)e.Item.FindControl("lblTotal")).Text,
NumberStyles.Currency, clone, out number))
{
// You can use number here
}
您应该通知Decimal.TryParse您有一个货币符号,您的文化是什么
string test = "110,00€";
if( Decimal.TryParse(test, NumberStyles.Currency, CultureInfo.CurrentCulture, out number))
{
Console.WriteLine(number);
}
我还建议在检索要解析的标签时使用更具防御性的方法。
Label lbl = e.Item.FindControl("lblTotal") as Label;
if(lbl != Null)
{
.....
}
您可以将CultureInfo.CreateSpecificCulture与使用欧元作为货币的国家/地区的区域性代码一起使用。
语言文化名称、代码和ISO值方法表。
例如,希腊、爱尔兰和意大利都使用这种货币。
简单
decimal resault = decimal.Parse(((Label)e.Item.FindControl("lblTotal")).Text.ToString()
,NumberStyles.Currency
,CultureInfo.CreateSpecificCulture("it-IT"));
这将正确地将字符串"110,00€"
转换为十进制,因为意大利使用欧元(€
)作为货币。
或者,您可以通过在提供的链接中搜索来使用其他区域性。