Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.01.07;
Скачать: [xml.tar.bz2];

Вниз

DecimalSeparator & c#   Найти похожие ветки 

 
Галинка ©   (2006-12-16 21:25) [0]

Как правильно применять натсройки региональные при конвертировании из строки в дробное число?

Т.к. нахожусь в Германии, то региональные настройки немецкие. Десятичный знак по умолчанию запятая. Но в конечных xml-файл надо выводить с точкой. Изменением настроек на американские добилась сохранения числе с точкой в качестве десятичного знака. Но теперь System.Convert не понимает точек. Как быть?


 
Eraser ©   (2006-12-16 21:38) [1]

> [0] Галинка ©   (16.12.06 21:25)

в xml файлы записывайте значение в экспонентном (Scientific) формате.
           decimal d = 3.14M;
           string s = d.ToString("E");
           MessageBox.Show(s);

а для отображения лучше использовать региональные настройки.

ЗЫ у Рихтера данная тема хорошо объясняется.


 
Галинка ©   (2006-12-16 21:45) [2]

спасибо. А я нашла еще метод Replace у строки. Если перед сохранением и перед конвертацией просто менять десятичный знак? Типа:

при записи в xml:

curObjNode.InnerText = ((string)curObject.doubleValue.ToString()).Replace(",", ".");

а при чтении:

curObject.doubleValue = Convert.ToDouble(((string)curObjNode.InnerText).Replace(".", ","));


 
Eraser ©   (2006-12-16 21:48) [3]

> [2] Галинка ©   (16.12.06 21:45)

плохой метод, т.к. никто не гарантирует, что в какой-нибудь стране будет использоваться в качестве разделителя, к примеру, знак вопроса.
лучше сохранять в универсальном формате.


 
Eraser ©   (2006-12-16 21:57) [4]

держи еще вариант, по аналогии с Делфи
           System.Globalization.NumberFormatInfo numInfo = new System.Globalization.NumberFormatInfo();
           decimal d = 3.14M;
           numInfo.NumberDecimalSeparator = ".";
           string s = d.ToString("n", numInfo);
           MessageBox.Show(s);


 
Галинка ©   (2006-12-16 22:07) [5]

Eraser, спасибо еще раз. С ToString у меня проблем нет. Проблемы с обратным конвертом. т.е. ты предлагаешь реплэйс оставить только для конвертирования строки в число?

кстати. сейчас у меня именно так и есть.


 
Eraser ©   (2006-12-16 22:47) [6]

> [5] Галинка ©   (16.12.06 22:07)


> т.е. ты предлагаешь реплэйс оставить только для конвертирования
> строки в число?

ни в коем случае! никаких реплейсов быть не должно.
           System.Globalization.NumberFormatInfo numInfo = new System.Globalization.NumberFormatInfo();
           decimal d = 3.14M;
           numInfo.NumberDecimalSeparator = ".";
           string s = d.ToString("n", numInfo);
           MessageBox.Show(s);
           d = decimal.Parse(s, numInfo);
           s = d.ToString("n");
           MessageBox.Show(s);


когда же уже справку читать начнешь? :)


 
Галинка ©   (2006-12-16 23:52) [7]

спасибо. беда в том, что я даже не представляю, что искать (( только помидорами не кидайте (( теперь буду знать про парсер )) чес слово


 
Eraser ©   (2006-12-17 00:07) [8]

> [7] Галинка ©   (16.12.06 23:52)


> беда в том, что я даже не представляю, что искать

Рихтера книгу купи, там все с самого начала объясняется + куча примеров.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.01.07;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.01 c
15-1166476567
ArtemESC
2006-12-19 00:16
2007.01.07
Какая функция в библиотеках С переводит число в строку?


2-1166456508
sat
2006-12-18 18:41
2007.01.07
как свернуть программу в системный трей


15-1165905098
cvg
2006-12-12 09:31
2007.01.07
Есть ли звук громче, чем beep?


11-1143429106
sff
2006-03-27 07:11
2007.01.07
полосы прокрутки для scrollbox


2-1166172987
Tupoy
2006-12-15 11:56
2007.01.07
Научите работать с клавой





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский