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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> входная строка имела неверный формат 
:(
    Опции темы
Тиниминиминиму
Дата 20.9.2009, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



у меня выдает "входная строка имела неверный формат" в этом моменте кода

Код

String[] uses = new String[10];
Double[,] mass = new Double[10000, 50];
//пробовал также вариант double - не помогло
for (int i2 = 0;i2<7 ; i2++)
                        {
                            Console.WriteLine(uses[i2]);
                            mass[i1, i2] = Convert.ToDouble(uses[i2]);
                            Console.WriteLine(mass[i1, i2]);
                            Console.WriteLine(Convert.GetTypeCode(mass[i1, i2]));
                            Console.WriteLine(Convert.GetTypeCode(uses[i2]));
                        }


ошибка выскакивает при третьем прохождении, вывод на консоль сделал, чтобы видеть, в чем проблема ... 
таким образом консоль выдала следующее:
Код

20010103
20010103
Double
String
110000
110000
Double
String
680.00000

очевидно, что проблема возникла при конвертации строки 680.00000 в эквивалентный вариант типа Double, но почему ? При этом никаких проблем конвертации с предыдущими числами не возникало, хотя Double создан как раз для работы с числами с плавающей точкой ... 
PM MAIL   Вверх
KelTron
Дата 20.9.2009, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Скорее всего проблемы с культурой. Попробуй использовать запятую вместо точки, когда задаёшь число в виде строки.


--------------------
Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог.
Эвенгар Салладорский, основатель Школы Тьмы.
PM MAIL   Вверх
Тиниминиминиму
Дата 20.9.2009, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(KelTron @ 20.9.2009,  19:50)
Скорее всего проблемы с культурой. Попробуй использовать запятую вместо точки, когда задаёшь число в виде строки.

спасибо, действительно помогло) удивительно ... не думал, что проблема может быть в такой глупости ... тогда бы уж назвали число с плавающей запятой )
PM MAIL   Вверх
Heinzz
Дата 20.9.2009, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 12.12.2008
Где: .net

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



у американцев точка, у нас запятая => эта фигня. В русской раскладке пользователь нумпадом всегда забивает запятые smile 



--------------------
user posted image
PM MAIL   Вверх
Lunatic2009
Дата 21.9.2009, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Можно написать расширяющий метод, что-то типа этого:

Код

    class Program
    {
        static void Main(string[] args)
        {
            string s = "3.14";
            double d = s.ToDouble();

            Console.WriteLine(d);
            Console.ReadKey();
        }
    }

    public static class StringExtension
    {
        public static double ToDouble(this string s)
        {
            double result = 0;

            try
            {
                result = Double.Parse(s);
            }
            catch (Exception)
            {
                try
                {
                    s = s.Replace(".", ",");
                    result = Double.Parse(s);
                }
                catch (Exception)
                {
                    try
                    {
                        s = s.Replace(",", ".");
                        result = Double.Parse(s);
                    }
                    catch (Exception)
                    {
                    }
                }
            }

            return result;
        }
    }

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


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 12.12.2008
Где: .net

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



Я обычно делаю так:
Код

   string str = "15.256";
   double d = double.Parse(str.Replace('.',','));

работает.
Хотя это все региональные настройки виндуса виноваты. Такой ход не пройдет на всех компьютерах -  вдруг у кого-то виндовс английский или региональные настройки изменены. По правильному надо делать локализацию, а вот для себя и так пойдет.



--------------------
user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

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


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

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


 




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


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

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