Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > .NET для новичков > преобразование String в число... |
Автор: RUVATA 15.2.2011, 16:45 |
Всем доброго времени суток... Из справки по VB.NET вычитал, циатата: Тип данных String (Visual Basic) участвует лишь в небольшом числе расширяющих преобразований. String расширяется только до себя и типа Object, и только типы Char и Char() (массив Char) расширяются до типа String. Это происходит потому, что переменные и константы String могут содержать значения, которые другие типы данных не могут содержать. А как-же быть ? если я например с txt считал строку, распарсил ее и мне некоторые ее части необходимо использовать как числа? да и вообще если надо, а это не редкость Это-же абсурд... надеюсь что способы таки есть... |
Автор: diadiavova 15.2.2011, 17:03 |
У всех числовых типов есть методы Parse и TryParse. Используй их. |
Автор: RUVATA 15.2.2011, 18:34 |
Visual Studio 2010 ( еще фитча справка показывает вот... Conversions - класс Содержит методы, выполняющие различные преобразования типов. Пространство имен: Microsoft.VisualBasic.CompilerServices Сборка: Microsoft.VisualBasic (в Microsoft.VisualBasic.dll) где якобы есть заветный Conversions.ToDecimal - метод (String) Преобразует строку в значение типа Decimal. А так-же есть ToInteger, ToDouble и все на свете Ну так ёб-т это пространство имен, не импортируется и его вообше нигде нет кроме пользовательских ссылок, где гордо ставишь галочку а толку ни фига. Простансво Microsoft.VisualBasic поддерживается автоматически, но судя по обозревателю нет в нем CompilerServise Что это ? |
Автор: RUVATA 15.2.2011, 18:51 | ||||
Да что за хрень беру из примера...
на тебе! значение имеет не правильный формат... да ё-пт... Цитата из справки, которая выскакивает как help по вызванному исключению Double.Parse will throw a FormatException if its string argument is not in a recognizable numeric format. The Examples:
|
Автор: diadiavova 15.2.2011, 19:22 |
Обозреватель показывает не все. Ставь запятую, или используй перегрузку метода, в которой есть IFormatProvider. |
Автор: A5uKa 16.2.2011, 16:45 | ||
Аппладирую стоя |
Автор: -Mikle- 16.2.2011, 19:01 | ||
Как и сказал diadiavova, перегрузка метода Parse с одним аргументом использует текущие региональные настройки системы. При необходимости парсить строку из например текстбокса в который вводится например сумма, это работает как раз так как должно. Символом разделения дробной части в "независимом" формате является точка. Если ожидается что в строке содержится дробное число в "независимом" формате (например, если вы пишете компилятор или низкоуровнево читаете из XML или... или... или...), то используйте явную передачу формата:
В приведенном примере в строке всегда будет ожидаться точка, не зависимо от текущих региональных настроек пользователя ОС. |