Главная страница
    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-1165998355
infom
2006-12-13 11:25
2007.01.07
Backup Delphi со всеми компонентами


2-1166312860
Riply
2006-12-17 02:47
2007.01.07
Несколько вопросов по WMI.


2-1166534893
Dmytro
2006-12-19 16:28
2007.01.07
какие различия между Free и Destroy? как грамотно разрушить?


2-1166211592
kolj
2006-12-15 22:39
2007.01.07
ShellExecute


8-1148053809
Scordion
2006-05-19 19:50
2007.01.07
Обрезать JPEG





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский