Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> преобразование String в число... 
:(
    Опции темы
RUVATA
Дата 15.2.2011, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 24.8.2010

Репутация: нет
Всего: нет



Всем доброго времени суток...
Из справки по VB.NET вычитал, циатата:

Тип данных String (Visual Basic) участвует лишь в небольшом числе расширяющих преобразований. String расширяется только до себя и типа Object, и только типы Char и Char() (массив Char) расширяются до типа String. Это происходит потому, что переменные и константы String могут содержать значения, которые другие типы данных не могут содержать. 

А как-же быть ? если я например с txt считал строку, распарсил ее и мне некоторые ее части необходимо использовать как числа? да и вообще если надо, а это не редкость
Это-же абсурд... надеюсь что способы таки есть...
PM MAIL   Вверх
diadiavova
Дата 15.2.2011, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 18
Всего: 142



У всех числовых типов есть методы Parse и TryParse. Используй их.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
RUVATA
Дата 15.2.2011, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 24.8.2010

Репутация: нет
Всего: нет



Visual Studio 2010 (
еще фитча справка показывает вот...

Conversions - класс

Содержит методы, выполняющие различные преобразования типов.

Пространство имен:   Microsoft.VisualBasic.CompilerServices
Сборка:   Microsoft.VisualBasic (в Microsoft.VisualBasic.dll) 


где якобы есть заветный 

Conversions.ToDecimal - метод (String)

Преобразует строку в значение типа Decimal.  

А так-же есть ToIntegerToDouble и все на свете
Ну так ёб-т это пространство имен, не импортируется и его вообше нигде нет
кроме пользовательских ссылок, где гордо ставишь галочку а толку ни фига.
Простансво Microsoft.VisualBasic поддерживается автоматически, но судя
по обозревателю нет в нем CompilerServise

Что это ?

PM MAIL   Вверх
RUVATA
Дата 15.2.2011, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 24.8.2010

Репутация: нет
Всего: нет



Да что за хрень беру из примера...

Код

Dim x As Double
x = Double.Parse("32.115")


на тебе! значение имеет не правильный формат... да ё-пт...

Цитата из справки, которая выскакивает как help по вызванному исключению
Double.Parse will throw a FormatException if its string argument is not in a recognizable numeric format. 
The Examples:

Код

' The first three statements run correctly.

Console.WriteLine(Double.Parse("32,115"))

Console.WriteLine(Double.Parse("32115"))

Console.WriteLine(Double.Parse("32.115")) ' Вот это разве не то что у меня вызывает исключение!

' The following statement throws a FormatException.

' Console.WriteLine(Double.Parse("32 115"))


Это сообщение отредактировал(а) RUVATA - 15.2.2011, 18:53
PM MAIL   Вверх
diadiavova
Дата 15.2.2011, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 18
Всего: 142



Цитата(RUVATA @  15.2.2011,  18:34 Найти цитируемый пост)
 но судя
по обозревателю нет в нем CompilerServise

Обозреватель показывает не все.
Цитата(RUVATA @  15.2.2011,  18:51 Найти цитируемый пост)
на тебе! значение имеет не правильный формат... да ё-пт...

Ставь запятую, или используй перегрузку метода, в которой есть IFormatProvider.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
A5uKa
  Дата 16.2.2011, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

Репутация: 3
Всего: 16



Цитата

Console.WriteLine(Double.Parse("32.115")) ' Вот это разве не то что у меня вызывает исключение!
' The following statement throws a FormatException.


Аппладирую стоя
PM   Вверх
-Mikle-
Дата 16.2.2011, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 4
Всего: 59



Как и сказал diadiavova, перегрузка метода Parse с одним аргументом использует текущие региональные настройки системы. При необходимости парсить строку из например текстбокса в который вводится например сумма, это работает как раз так как должно. Символом разделения дробной части в "независимом" формате является точка. Если ожидается что в строке содержится дробное число в "независимом" формате (например, если вы пишете компилятор или низкоуровнево читаете из XML или... или... или...), то используйте явную передачу формата:

Код

    double num = double.Parse("34.232", CultureInfo.InvariantCulture);


В приведенном примере в строке всегда будет ожидаться точка, не зависимо от текущих региональных настроек пользователя ОС.


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0669 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.