[英]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與使用歐元作為貨幣的國家/地區的文化代碼一起使用。
例如希臘,愛爾蘭,意大利使用此貨幣。
只是
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.