簡體   English   中英

在c#中將字符串轉換為十進制

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM