2010-02-26 2 views
6

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

+1

Что случилось с 'myDecimal.ToString()'? – Joey

+0

Загрузка nHibernate объекта из базы данных, свойство decimal и при вызове toString() оно форматируется с правильными знаками после запятой. Однако при сохранении установки того же свойства из текста, например. alloc.Price = Decimal.Parse (цена, CultureInfo.CurrentCulture); , но как только это установлено и вызывается alloc.Price.toString() десятичные разряды не добавлены. например, после десятичного разбора 15 хотите 15,00, но toString просто дает 15. Странно? – c00ke

ответ

8

Добавить формат в ToString: myDecimal.ToString("#.00") или myDecimal.ToString("C"). См. http://msdn.microsoft.com/en-us/library/427bttx3.aspx

+0

nУбедитесь, что свойство nHibernate было Decimal? там опция формата не была доступна по методу toString. Теперь создаем десятичную переменную и используем ваш ответ и работаем. ура! – c00ke

+0

, если это Nullable , то вы можете либо использовать свойство .Value, либо применить к десятичной (если вы уверены, что это не null) –

1

использование:

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US", false); 
+0

Что будет работать, только если CurrentCulture является en-US ... – Unsliced

+2

ну и что? Он не просит динамическую культуру. – NetSide

+0

JavaScript не является «глобальным», поэтому я использовал .ToString («# .00», New CultureInfo («en-GB», False)) – Zymotik

0

Кроме того, если вы хотите использовать культуру, указанный пользователем вы можете использовать:

yourDecimal.ToString("N2", CultureInfo.CreateSpecificCulture(userInfo);

string userInfo = "en-US";

Смежные вопросы