Десятичная дробь. Строка анализа, добавленная знаком минус
decimal decimalVal;
Decimal.TryParse("123-", out decimalVal);
Console.WriteLine(decimalVal); // -123
Почему строка "123-" обрабатывается таким образом?
Ответы
Ответ 1
Decimal.TryParse Method по умолчанию проверяет ввод NumberStyles.Number. NumberStyles.Number включает NumberStyles.AllowTrailingSign.
Decimal.TryParse Method (String, Decimal)
[...]
Параметр s интерпретируется с использованием стиля NumberStyles.Number.
[...]
Номер Указывает, что используются стили AllowLeadingWhite, AllowTrailingWhite, AllowLeadingSign, AllowTrailingSign, AllowDecimalPoint и AllowThousands. Это стиль составного номера.
AllowTrailingSign Указывает, что числовая строка может иметь завершающий знак. Допустимые знаковые символы знака определяются свойствами NumberFormatInfo.PositiveSign и NumberFormatInfo.NegativeSign.
Ответ 2
Обозреватель NumberStyles.Number используется по умолчанию:
Указывает, что используются стили AllowLeadingWhite, AllowTrailingWhite, AllowLeadingSign, AllowTrailingSign, AllowDecimalPoint и AllowThousands. Это стиль составного номера
http://msdn.microsoft.com/en-us/library/system.globalization.numberstyles.aspx
Ответ 3
Это принятый формат для Decimal.Parse
. Опция style
для метода Parse
допускает ведение и завершающие знаки.
Подробнее: http://msdn.microsoft.com/en-us/library/91fwbcsb.aspx