Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.01.07;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.047 c
2-1166550579
Vladimir1984
2006-12-19 20:49
2007.01.07
Изменение прорисовки OpenGL c помощью Radiobutton или др инстр..


15-1166174842
Metamorph
2006-12-15 12:27
2007.01.07
Ищутся компоненты EhLib 4.1 для Delphi2006х


2-1163146202
inkvizitor
2006-11-10 11:10
2007.01.07
Массив из Мемо


15-1165865326
Святослав
2006-12-11 22:28
2007.01.07
UML 2.0 в Delphi 2006


15-1166210358
PHPDeveloper
2006-12-15 22:19
2007.01.07
органайзер