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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> не понятная работа double 
V
    Опции темы
Samotnik
Дата 7.5.2008, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

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



сабж 
почему то вот этот кусок кода отрабатывает, не так как нужно.  Т.е.  я ставлю тип  double  ввожу число к примеру 1.2 а мне в ответ эспепшен, а вот когда ввожу 1,2  (т.е. через запятую) то все нормально работает  smile    Это фишка сишарпа?   тогда, как сделать так, что бы тип double  распозновался через точку, а не через запятую ???
Код

public void Edit()
        {
            Console.WriteLine("Enter avtomobile Name:");
            String accountName = Console.ReadLine();

            for (int i = 0; i < m_arrayList.Count; i++)
            {
                DataModel dataModel = (DataModel)m_arrayList[i];
                if (accountName.Equals(dataModel.m_accountName))
                {
                    Console.WriteLine("Enter avto Name:");
                    String newAccountName = Console.ReadLine();
                    Console.WriteLine("Enter price:");
                    String arrears = Console.ReadLine();
                    DataModel newDataModel = new DataModel();
                    newDataModel.m_accountName = newAccountName;
                    newDataModel.m_arrears = double.Parse(arrears);  //  конкретно  вот  тут ошибка  !!!!!!
                    m_arrayList.RemoveAt(i);
                    m_arrayList.Insert(i, newDataModel);
                    Console.WriteLine("Edit successful");
                }
            }
        }


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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

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



настроить региональные настройки Windows ;)


--------------------
PM   Вверх
fromrus
Дата 7.5.2008, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А вот в коде точку можно ставить  smile Видно дело с парсером по умолчанию,т.е. компилятор распознает 1,2 как два отдельных символа...))))Вывод:писать свой собственный парсер... smile 
PM MAIL ICQ   Вверх
Samotnik
Дата 7.5.2008, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

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



Цитата(v2v @  7.5.2008,  19:51 Найти цитируемый пост)
настроить региональные настройки Windows ;) 

 smile  smile  smile 
В этих разделах всегда так отвечают ?  
т.е. на другой ответ можно не расчитывать ? 
PM MAIL   Вверх
Unsane
Дата 7.5.2008, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А тебе правильно говорят. В настройках региональных стандартов для русского языка четко определено, что разделитель целой и дробной части запятая.

Попробуй так..
Код

newDataModel.m_arrears = double.Parse(arrears.Replace('.', ','));

--------------------
Я дурак.. Этим и интересен!
PM MAIL   Вверх
vponomarov
Дата 7.5.2008, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Samotnik, нифига тебе не правильно говорят smile 
делай вот так:
Код

            System.Globalization.CultureInfo cult=new System.Globalization.CultureInfo("ru-RU");
            cult.NumberFormat.NumberDecimalSeparator=".";
            double d = double.Parse("1.2", cult.NumberFormat);



--------------------
user posted image
user posted image
PM MAIL ICQ   Вверх
Samotnik
Дата 7.5.2008, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

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



подождите, дело в том, что я в сишарпе не шарю, а лабу здавать надо, и желание разобраться тоже есть, к примеру в  Java я вообще ниразу такого не видел, что дробное число черезе точку считывается как ошибочное, а  число черезе запятую, как  нормальное дробное..   smile 
Вы пожалста код с обьяснениями вылаживайте !  smile 
PM MAIL   Вверх
vponomarov
Дата 7.5.2008, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Samotnik, формат чисел в каждой стране (в терминах .нет - культуры) разный.
по-умолчанию, при конвертации чисел из строк .нет берет текущую культуру винды, которая скорее всего у тебя русская, а в русской культуре разделителем является запятая.
в коде, который написал я при конвертации явно указывается какую культуру юзать, а в этой культуре в свою очередь явно указано, что разделителем является точка.


--------------------
user posted image
user posted image
PM MAIL ICQ   Вверх
Samotnik
Дата 7.5.2008, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

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



vponomarov,  пасибо, а как это к моему примеру приделать ?


Это сообщение отредактировал(а) Samotnik - 7.5.2008, 21:51
PM MAIL   Вверх
mr.DUDA
Дата 8.5.2008, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Samotnik, 

Код
public void Edit()
        {
            Console.WriteLine("Enter avtomobile Name:");
            String accountName = Console.ReadLine();

            for (int i = 0; i < m_arrayList.Count; i++)
            {
                DataModel dataModel = (DataModel)m_arrayList[i];
                if (accountName.Equals(dataModel.m_accountName))
                {
                    Console.WriteLine("Enter avto Name:");
                    String newAccountName = Console.ReadLine();
                    Console.WriteLine("Enter price:");
                    String arrears = Console.ReadLine();
                    DataModel newDataModel = new DataModel();
                    newDataModel.m_accountName = newAccountName;

                    newDataModel.m_arrears = double.Parse(arrears.Replace('.', ','));  //  конкретно  вот  тут ошибка  !!!!!!

                    m_arrayList.RemoveAt(i);
                    m_arrayList.Insert(i, newDataModel);
                    Console.WriteLine("Edit successful");
                }
            }
        }



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

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


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

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


 




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


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

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