Форум: "Начинающим";
Текущий архив: 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.011 c