При синтаксическом анализе в виде десятичного числа вы вполне можете захотеть проанализировать число, например «23,393%», но это не работает без ручного удаления символа процента (%). Я ожидаю, что эта строка вернет true:
Decimal.TryParse("31.7%",System.Globalization.NumberStyles.Any, null, out var dec)
Документация для System.Globalization.NumberStyles.Any, по-видимому, указывает, что она должна разрешать любое (десятичное) числовое форматирование. Есть ли причина, по которой процент не был включен?
(note: I'm working in C#, but the underlying TryParse function should also be in VB.NET and other .NET languages, so this question applies to them too)





Я думаю, вы неправильно читаете этот документ. В примечании к Any говорится следующее:
all styles except AllowHexSpecifier are used. This is a composite number style.
Это не значит, что все идет. Это означает только любые другие записи конкретный в перечислении NumberStyles (кроме, конечно, AllowHexSpecifier). Никто из этих числовых стилей имеют какое-либо отношение к знаку процента или вашему формату здесь. Ближе всего AllowTrailingSign, но читая примечание к этому стилю, мы видим это:
Valid trailing sign characters are determined by the PositiveSign and NegativeSign properties.
Там нет выбора процента. Похоже, вам придется управлять этим форматом самостоятельно.
Спасибо за разъяснения! Обратите внимание, что исходный вопрос был Зачем без знака процента. Они идут только за валютой (явно нет, из-за шестнадцатеричных опций)?