Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
lennen
0 / 0 / 2
Регистрация: 14.09.2014
Сообщений: 123
#1

Double не получается из строки

13.01.2016, 16:20. Просмотров 204. Ответов 9
Метки нет (Все метки)

C#
1
2
3
4
5
6
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.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2016, 16:20
Ответы с готовыми решениями:

Не получается записать в TextBox значение Double
Я в недоумении.Не работает.Ругается на четвёртую строчку x =...

Ругается на строчку double[] wArray = new double[n];, double[] w = new double[n];
Ругается на строчку double wArray = new double;, double w = new double; Не...

Сохранить количество знаков после запятой после конвертации из строки в double
Всем привет. У меня такой вопрос, может даже глупый немного. У меня в ячейке...

Не получается кастить double to Double
Столкнулся с несколько интересной проблемой: компилятор заел на ошибке «error:...

Ошибки error C2296: -: недопустимо, левый операнд имеет тип "double (__cdecl *)(double,double,double
Думаю из-за polp #include&lt;iostream&gt; #include&lt;cmath&gt; #include&lt;cstdlib&gt;...

9
Someone007
2169 / 1762 / 794
Регистрация: 09.05.2015
Сообщений: 4,357
Завершенные тесты: 1
13.01.2016, 16:24 #2
С целыми числами по идее должно работать, может у вас проблема в десятичном разделителе (запятая вместо точки или наоборот, в зависимости от региональных настроек).
0
kontuPauk
301 / 299 / 125
Регистрация: 29.01.2013
Сообщений: 638
Записей в блоге: 1
Завершенные тесты: 1
13.01.2016, 16:27 #3
По-моему, Вам все-таки надо str1[i] конвертировать...
0
Spectral-Owl
576 / 554 / 155
Регистрация: 29.06.2010
Сообщений: 1,588
Завершенные тесты: 1
13.01.2016, 16:31 #4
kontuPauk, угу. А если влом заморачиваться с CultureInfo, то даже так:
C#
1
atts[i] = Convert.ToDouble(str1[i].Replace(".",","));
0
lennen
0 / 0 / 2
Регистрация: 14.09.2014
Сообщений: 123
13.01.2016, 17:02  [ТС] #5
C#
1
2
3
4
5
6
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". Как исправить?
0
aquaMakc
472 / 385 / 68
Регистрация: 14.02.2014
Сообщений: 1,883
Завершенные тесты: 1
13.01.2016, 17:21 #6
C#
1
Double.Parse("1");
0
kontuPauk
301 / 299 / 125
Регистрация: 29.01.2013
Сообщений: 638
Записей в блоге: 1
Завершенные тесты: 1
13.01.2016, 17:24 #7
Проверил, у меня вот это:
C#
1
2
3
 double x = Convert.ToDouble("4", CultureInfo.GetCultureInfo("en-US"));
            double t = Math.Sqrt(x);
            MessageBox.Show(t.ToString());
выдало "2". Что-то не так у Вас с теми строками...
0
lennen
0 / 0 / 2
Регистрация: 14.09.2014
Сообщений: 123
13.01.2016, 17:35  [ТС] #8
Да, проверил, действительно мистика. Смотрите на переменную str1:

- str1 {string[90002]} string[]
[0] "1" string
[1] "1" string
[7638] "1.0027" string


Теперь код мой такой, и он работает правильно.

C#
1
2
3
4
5
6
7
8
string[] str1 = Regex.Split(att, @" ");
            
            double[] atts = new double[90001];
 
            for (int i = 0; i < 90001; i++)
            {
                atts[i] = Convert.ToDouble(str1[i], CultureInfo.GetCultureInfo("en-US"));
            }
Как так?
0
aquaMakc
472 / 385 / 68
Регистрация: 14.02.2014
Сообщений: 1,883
Завершенные тесты: 1
13.01.2016, 17:49 #9
C#
1
Double.Parse("1", CultureInfo.InvariantCulture)
0
Spectral-Owl
576 / 554 / 155
Регистрация: 29.06.2010
Сообщений: 1,588
Завершенные тесты: 1
14.01.2016, 08:16 #10
наверняка ошибка было в том, что в строке с числом как разделитель выступала не точка, а запятая. Или наоборот, не помню что там у en-US считается разделителем.
0
14.01.2016, 08:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.01.2016, 08:16

Ошибка: error LNK2001: unresolved external symbol "double __cdecl Akk(double,double,double)"
#include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; double Akk(double...

Не получается преобразовать ArrayList в double[]
Не получается преобразовать ArrayList в массив типа double ...

Не получается прочитать текстовый файл и записать содержимое в QVector <double>
Добрый день! Проблема в том, что не получается прочитать текстовый файл и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru