Строка.Формат не форматирует строку
Кажется, что строка.Format не будет форматировать строку в качестве ввода. Я делаю что-то не так, или это просто врожденное поведение?
вход : 0.37
это не сработает.
string x = String.Format("{0:P}", myString)
выход : 0.37
это делает.
string x = String.Format("{0:P}", Convert.ToDecimal(myString))
выход : 37.00 %
3 ответов
Я считаю, что это ожидаемое поведение для "составного форматирования".
ваш первый пример-попытка применить правила числового форматирования к строке. Второй пример - попытка применить правила числового форматирования к числу, которое может иметь десятичные позиции.
посмотреть эта статья на MSDN для получения дополнительной информации.
опции формат, который вы пытаетесь применить, работает только для чисел. Нет концепции умных строк .Чистая среда CLR проверяет строку на тип.
Я делаю что-то неправильно, или это просто собственное поведение?
это родное поведение. Это в основном не работа Format
интерпретировать строке ввода. Format
предполагает, что пользователь предоставляет правильные данные-в вашем случае, цифровой данные. Строка не является числовой, даже если она представляет число (это важнейшее различие в CS между значением/семантикой и его представлением/синтаксисом!).