2015-09-08 5 views
0

У меня есть эта строка «121,121.00», и мне нужно преобразовать ее в десятичное число, чтобы дать интерфейсу этот «121121.00». Я много пробовал, но пока не могу. Вот какой код я попробовал и результаты, которые они мне дали:строка до десятичного числа, показывающая всегда два десятичных знака

string var = "121,121.00" 

decimal d = decimal.Parse(var, NumberStyles.AllowThousands | NumberStyles.AllowDecimalPoint); 
// it gives me '12112100' 

decimal d = decimal.Parse(var, NumberStyles.Currency); 
// it gives me '12112100' 

decimal d = decimal.Parse((var.Replace(",","")), NumberStyles.Currency); 
// and it gives me '12112100' too 
+0

Прошло немного времени с тех пор, как я работал с C#, но я ожидаю, что вам нужно будет установить локаль. –

+0

К сожалению, извините за неуклюжие правки. Я не хотел вынимать полуколоны. –

+0

'' 121,121.00 ".Replace (", "," ")'? Похоже, вы сбиваете с толку десятичное и это строковое представление. –

ответ

6

Десятичный знак имеет только значение, вы путаете его со строкой, которая может умножать число в нужном формате. Вы можете использовать d.ToString("0.00)" с CultureInfo.InvariantCulture:

string var = "121,121.00"; 
decimal number = decimal.Parse(var, CultureInfo.InvariantCulture); 
string result = number.ToString("0.00", CultureInfo.InvariantCulture); 
+0

Мне нужно получить десятичное значение Tim, но то, что делает decimal.Parse, всегда объединяет десятичную цифру с номером. Мне нужно получить номер, который не имеет значения, если он показывает нули или нет, но если десятичные числа! = Нуль, мне нужно показать их и всегда число как десятичное –

+0

@JuanFranciscoCaballero: вы пробовали мой код? Он возвращает '121121.00' по желанию. –

+0

и имя «var» было ошибкой, это не настоящее имя строки. Извините, hahaha –

3

Номера не имеют нулевой десятичный знак.

Если вы хотите отобразить их определенным образом (в отличие от работы с ними), вам необходимо преобразовать их в строку, то есть number.ToString("0.00") - однако это несколько смешно, потому что вы начинаете с строки в первой место.

+0

Также 'var' является ключевым словом в C#. Возможно, другое имя будет лучше. Один из них более описателен, например. – Blindy

+0

Я имею в виду, что функция всегда объединяет десятичные числа с номером. Знаете ли вы, почему? –

2

Простой единый процесс шаг - Разбираем десятичной непосредственно как:

var decimalValue = decimal.Parse(decimalString); 

так, decimal.Parse("121,121.00") возвратит decimal value - 121121.00. Не нужно беспокоиться о строках и культуре.

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