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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> parse дробных чисел и региональные настройки 
:(
    Опции темы
RokDemon
Дата 20.1.2012, 01:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Нужна помощь.
1)Меня интересует, как правильно сделать так, чтобы пользователь, не зная текущих региональных настроек вводил дробные числа в поле ввода ,
а система затем правильно "понимала" величину этих чисел не зависимости от того ввел он к примеру "3.14" или "3,14" и дальше уже оперировала данными.
я сделал так:
Код

using System;
using System.Globalization;

namespace test_doubleParse
{
    class Program
    {
        static void Main(string[] args)
        {
            NumberFormatInfo nfi = NumberFormatInfo.CurrentInfo;
            string CurrentDecimalSeparator = nfi.CurrencyDecimalSeparator;
            string str_value = "3,14";
            double d = double.Parse(conversion(str_value,CurrentDecimalSeparator));
            Console.WriteLine(d  +  "\t\t\tВсе в порядке!");
            Console.ReadLine();
        }

        /// <summary>
        /// автоматическое преобразование чисел с любым разделителем("." или ",") в текущую для системы
        /// </summary>
        /// <param name="str1">входная строка</param>
        /// <param name="str2">разделитель в текущих региональных настройках</param>
        /// <returns></returns>
        static string conversion(string str1, string str2) {
            
            if (str1.Contains(".") && (str2 != "."))
                return  str1.Replace('.', ',');
            if (str1.Contains(",") && (str2 != ","))
                return str1.Replace(',', '.');
            return str1;
        }
    }
}



что скажете?
2)как решается этот вопрос в реальных крупных приложениях, например финансового плана, где требуется вводить дробную информацию ? 
PM MAIL   Вверх
diadiavova
Дата 20.1.2012, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(RokDemon @  20.1.2012,  02:37 Найти цитируемый пост)
как решается этот вопрос в реальных крупных приложениях, например финансового плана, где требуется вводить дробную информацию ?  

В реальных приложениях принимается какой-то один метод ввода, а элементы управления проверяют корректность введенных данных. В крайнем случае, при некорректном вводе данные могут быть исправлены так, чтобы пользователь видел какие  изменения были внесены, а в случае, если неясно как именно надо исправлять, пользователь должен получать уведомление об ошибке ввода. В американской системе запятая используется как разделитель триплексов, так что запись 1,024 там означает 1024, а не то, что у нас, так что делать такой "универсальный" код явно не стоит. В крайнем случае сделай такую опцию в настройках приложения и пусть пользователь сам выбирает как ему вводить числа.
А вообще для ввода чисел лучше использовать элемент управления, специально для этой цели заточенный, то есть NumericUpDown.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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