2015-06-17 2 views
4

C# проблема decimal.toString() преобразованияC# десятичное ToString() преобразования с запятой (,)

Пример: У меня есть значение в десятичной (0,1) , когда я преобразовать десятичное в строку с помощью ToString() он возвращает (0,10). Вместо. (DOT) он возвращается, (COMMA).

+0

Проверьте текущие настройки Locale - вам нужно будет выбрать тот, который использует. а не, - Напротив этого вопроса: http://stackoverflow.com/questions/1559185/formatting-numbers-as-strings-with-commas-in-place-of-decimals – PaulF

+0

Вывод зависит от вас 'CurrentCulture' , ToString (CultureInfo) –

+0

Возможный дубликат [Настройка точки вместо запятой в числовых значениях] (http://stackoverflow.com/questions/9160059/set-up-dot-instead-of-comma-in-numeric-values) – Risadinha

ответ

4

Я считаю, что это связано с культурой/регионом, в котором установлена ​​ваша операционная система. Вы можете исправить/изменить способ анализа строки путем добавления в формате перегрузки в методе .ToString().

Например

decimalValue.ToString(CultureInfo.InvariantCulture); 
+0

спасибо .... он работает – sivaprakash

+0

@sivaprakash Не стесняйтесь галочку в ответе как правильном тогда :) – Ralt

+0

для маркировки ответа, так как правильно требует 15reputation.i есть только 7 – sivaprakash

0

Тогда текущие culture «ы NumberDecimalSeparator является , вместо ..

Если это не устраивает, Вы можете заставить точку с CultureInfo.InvariantCulture:

decimal num = 0.1m; 
string numWithDotAsSeparator = num.ToString(CultureInfo.InvariantCulture); 

или NumberFormatInfo.InvariantInfo

string numWithDotAsSeparator = num.ToString(NumberFormatInfo.InvariantInfo) 
1

Для этого, происходит, текущая культура Нить должна быть тот, который использует разделитель вместо запятой.

Вы можете изменить это на на ToString основы с использованием перегрузки для ToString, который принимает культуру:

var withDot = myVal.ToString(CultureInfo.InvariantCulture); 

В качестве альтернативы, вы можете изменить это для всей нити, установив культуру Нити перед выполнением каких-либо вызовов в ToString():

var ci = CultureInfo.InvariantCulture; 
Thread.CurrentThread.CurrentCulture = ci; 
Thread.CurrentThread.CurrentUICulture = ci; 

var first = myVal.ToString(); 
var second = anotherVal.ToString(); 
2

вы должны определить формат, это будет зависеть в вашей локальной настройки или определить формат, используя что-то вроде этого

decimal.ToString(System.Globalization.CultureInfo.CreateSpecificCulture("en-us")); 

веселит

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