[英]converting string to decimal in c#
我在使用decimal.parse將字符串轉換為十進制值時遇到一些問題。 這是我的代碼行:
fixPrice = decimal.Parse(mItemParts.Groups["price"].Value.Replace("$", "").Replace(" ", "").Replace("usd", ""));
我嘗試轉換的價值是:'$ 779.99'
然后一旦解析到十進制,我得到這個值:77999。
我想得到779.99而不是77999.先謝謝,Laziale
正則表達式包括:“@”\\ [^ \\“”] +?)\\“”[^〜] +?\\] +?src = \\“”(?[^ \\“”] +?)\\“”[^ >] +?標題= \\ “”(?[^ \\ “”] +?)\\ “”[^〜] +?價格\\ “”>(?[^ \\ <] +?)\\ <[^〜] +?\\(?[^ \\ <] +?)\\
我會使用Decimal.TryParse()
:
decimal parsedDecimal = 0;
string yourCurrency = "$779.99";
bool didParse = Decimal.TryParse(yourCurrency,
NumberStyles.Currency,
new CultureInfo("en-US"), out parsedDecimal);
if(didParse) {
// Parse succeeded
}
else {
// Parse failed
}
傳遞您要解析的文化的CultureInfo
實例。
CultureInfo
繼承自IFormatProvider
編輯:
這是轉換的示例
Decimal.Parse(yourValue, NumberStyles.AllowCurrencySymbol |
NumberStyles.AllowDecimalPoint |
NumberStyles.AllowThousands,
CultureInfo.InvariantCulture);
看來你是在'.'
的文化中運行它'.'
是組分隔符, ','
是小數分隔符。 要解決這個問題,請使用帶有CultureInfo的Parse重載:
fixPrice = decimal.Parse(stringExpression, CultureInfo.InvariantCulture);
另請查看NumberStyles
枚舉,這樣您就不必擔心貨幣符號:
fixPrice = decimal.Parse(stringExpression, NumberStyles.Currency, new CultureInfo("en-US"));
這對我有用:
string decStr = "$779.99";
CultureInfo ci = new CultureInfo("en-US");
decimal fixPrice = decimal.Parse(decStr, NumberStyles.Currency, ci);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.