繁体   English   中英

如何将字符串转换为十进制

[英]How can i Convert string to decimal

我无法从字符串转换为十进制,这是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€"转换为十进制,因为意大利使用的是欧元( )作为货币。

或者,您可以通过搜索提供的链接来使用其他文化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM