При чтении из БД с локалью en_us значения Decimal, я присваиваю значение переменной double
при переводе в строку у этого значения разделитель целой и дробной части — запятая, хотя исходя из региональных установок системы должна быть точка. Объясните как наследуются эти установки, или как их поменять для конкретной переменной.
Форматирование по умолчанию осуществляется исходя из региональных настроек потока, т.е. если у вас на комне стоит руссифицированная версия виндов и в качестве локализации — россия, то и форматироваться все будет по-российским стандартам. Что бы этому препятствовать необходимо либо поменять локализацию потока, либо пользоваться одним из перегруженных методов ToString().
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Если не хотите менять культуру потока, то можно сделать что-то типа этого:
double d = 105.99d;
// Русская культура.
string russianCulture = d.ToString(CultureInfo.CreateSpecificCulture("ru-RU"));
Console.WriteLine(russianCulture);
// Забугорная культура.
string englishCulture = d.ToString(CultureInfo.CreateSpecificCulture("en-US"));
Console.WriteLine(englishCulture);
А если устраивает смена культуры вцелом, то так:
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US");
Удачи!
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение