Ошибка TryParse с отрицательными числами

У меня проблема с правильной работой TryParse. У меня есть список значений, которые, как я почти уверен, действительны (поскольку они поступают из другого компонента нашей системы), но я хотел бы убедиться, что существует надлежащая обработка ошибок.

Вот пример списка моих значений :

20,00
У меня есть список значений, которые, как я почти уверен, действительны (поскольку они поступают из другого компонента нашей системы), но я хотел бы сделать ...

У меня проблема с правильной работой TryParse. У меня есть список значений, которые, как я почти уверен, действительны (поскольку они поступают из другого компонента нашей системы), но я хотел бы убедиться, что существует надлежащая обработка ошибок.

Вот пример списка моих значений :

20,00
У меня есть список значений, которые, как я почти уверен, действительны (поскольку они поступают из другого компонента нашей системы), но я хотел бы сделать ...

У меня проблема с правильной работой TryParse. У меня есть список значений, которые, как я почти уверен, действительны (поскольку они поступают из другого компонента нашей системы), но я хотел бы убедиться, что существует надлежащая обработка ошибок.

Вот пример списка моих значений :

20,00
20.00
-150.00

И вот метод, который я изначально написал:

 private decimal CalculateValue(IEnumerable<XElement> summaryValues)
        {
            decimal totalValue = 0;

            foreach (XElement xElement in summaryValues)
            {
                decimal successful;
                Decimal.TryParse(xElement.Value, out successful);
                if (successful > 0)
                    totalValue += Decimal.Parse(xElement.Value);
            }
            return totalValue;
        }

Переменная 'Success' возвращала false для -150.00, поэтому я добавил NumberStyles:

private decimal CalculateValue(IEnumerable<XElement> summaryValues)
        {
            decimal totalValue = 0;

            foreach (XElement xElement in summaryValues)
            {
                decimal successful;
                Decimal.TryParse(xElement.Value, NumberStyles.AllowLeadingSign, null, out successful);
                if (successful > 0)
                    totalValue += Decimal.Parse(xElement.Value, NumberStyles.AllowLeadingSign);
            }
            return totalValue;
        }

Однако теперь, когда у меня есть NumberStyles, ни один из цифры буду разбирать! Я чувствую себя хорошо, когда для IFormatProvider установлено значение null, поскольку это все в нашей системе. Кто-нибудь видит, что я делаю неправильно?

7
задан pravprab 18 March 2015 в 08:23
поделиться