Почему NumberStyles.Any не допускает символ процента?

При синтаксическом анализе в виде десятичного числа вы вполне можете захотеть проанализировать число, например «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)

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
443
1

Ответы 1

Я думаю, вы неправильно читаете этот документ. В примечании к 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.

Там нет выбора процента. Похоже, вам придется управлять этим форматом самостоятельно.

Спасибо за разъяснения! Обратите внимание, что исходный вопрос был Зачем без знака процента. Они идут только за валютой (явно нет, из-за шестнадцатеричных опций)?

NH. 15.02.2019 17:02

Другие вопросы по теме