簡體   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