Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.01.2016, 16:21   #1
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию Double не получается из строки

Код:
string[] str1 = Regex.Split(att, @" ");
            double[] atts = new double[180001];
            for (int i = 0; i < 180001; i++)
            {
                atts[i] = Convert.ToDouble(att[i], CultureInfo.GetCultureInfo("en-US"));
            }
В массиве str1 заложены числа. Такие, как 1.001, например. Так вот, выдало Эксепшн на строке atts. И я понял, с чем он связан - в массив str1 могут попадать не только числа формата 1.001, но и просто такие, как 1, 2, 3. Без всякой точки или занятой. Так вот, для меня реально настоящая проблема, как получить массив double-то, если половина чисел нормальные типа 1.001, а половина - просто типа 1.

Последний раз редактировалось Stilet; 13.01.2016 в 17:01.
Krasi вне форума Ответить с цитированием
Старый 13.01.2016, 16:35   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

вы бы в отладчике посмотрели что в строку попало.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 13.01.2016, 16:52   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

меня в этом коде всё смущает:
1)
Цитата:
Код:
new double[180001]
а почему 180001 ?
а если в строке будет меньше чисел, тогда что Вы будете конвертировать?!

2) конвертируются элементы массива att
а он откуда взялся?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.01.2016, 17:19   #4
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Да пока все равно. Код встает на i = 0, на отладчике смотрю.
Небольшая поправка, там переменную не ту вписал (att), но сути дела не меняет:
Код:
string[] str1 = Regex.Split(att, @" ");
            double[] atts = new double[180001];
            for (int i = 0; i < 180001; i++)
            {
                atts[i] = Convert.ToDouble(str1[i], CultureInfo.GetCultureInfo("en-US"));
            }
Проблема-то в том, что "1.001" конвертирует, а вот "1" нет. На этот раз я хорошо разобрался с вопросом, просто действительно, вроде, такой грех в функции Convert.ToDouble. "Can't convert Char to Doublein" Что можно сделать?
Krasi вне форума Ответить с цитированием
Старый 13.01.2016, 18:25   #5
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

Зачем тут Regex?
Цитата:
На этот раз я хорошо разобрался с вопросом
пока что нет, продолжайте разбираться
come-on вне форума Ответить с цитированием
Старый 14.01.2016, 12:30   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Krasi, Вы мой вопрос сознательно игнорируете?!
С чего Вы взяли, что у Вас в массиве есть 180002 числа?!!

Цитата:
На этот раз я хорошо разобрался с вопросом
оно и видно!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отличие double и long double в Вижиал cover Общие вопросы C/C++ 1 14.10.2012 13:53
не получается написать на С++ задачу на строки MAX_150275 Помощь студентам 3 13.05.2011 20:41
функция pow(double x, double y) Не могу понять в чем ошибка Vlashel Помощь студентам 3 07.10.2010 16:28
Не получается удалить строки из TMemo RIO Общие вопросы Delphi 2 03.12.2009 01:07