Преобразование строки валюты в маске с использованием Decimal.TryParse - PullRequest
1 голос
/ 16 ноября 2011

У меня проблема с преобразованием этой строки в десятичную.Я попытался следовать документации здесь безуспешно: Метод Decimal.TryParse

string stringVal = "-(3434343434.00)";

NumberStyles style = NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands |
    NumberStyles.AllowParentheses | NumberStyles.AllowLeadingSign;

CultureInfo culture = CultureInfo.CreateSpecificCulture("en-US");

decimal value;
bool parseSuccess = decimal.TryParse(stringVal, style, culture, out value);

parseSuccess возвращает false.

Ответы [ 2 ]

4 голосов
/ 16 ноября 2011

Я думаю, что знак и круглые скобки одновременно недействительны.-3434343434.00 в порядке как (3434343434.00), но - (3434343434.00) недействительно.- (3434343434.00) на самом деле не имеет смысла, он использует 2 разных метода для обозначения отрицательного значения и поэтому является немного избыточным.

3 голосов
/ 16 ноября 2011

В вашей строке есть как (), так и знак -. Это неверно и поэтому ваша строка не анализируется.

См. Документацию для AllowParentheses:

AllowParentheses : указывает, что числовая строка может содержать одну пару скобок, заключающих число. Скобки указывают, что анализируемая строка представляет собой отрицательное число.

...