2012-04-21 7 views
4

я пытаюсь форматировать десятичную как 0: 0,0 в C# попробовал этот кодФормат десятичное без запятой

string nv = textBox7.Text.Trim().Replace(',', '.'); 

res = Convert.ToDecimal(nv, new CultureInfo("en-GB")); 

но Рез всегда показывать результат с запятой, пробовал также с

new CultureInfo("en-GB") 

, но проблема сохраняется И спасибо вам заранее.

+0

'res' является' десятичным', а не строкой. Поэтому он не может иметь формат. – CodesInChaos

+2

Что означает '0: 0.0' даже для« десятичного »? В чем смысл ':'? – Oded

+1

@Oded Я думаю, что это означает '0'th параметр в' string.Format'. – CodesInChaos

ответ

1

res - decimal, а не строка. Поэтому он не может иметь формат. Десятичные числа - это чистые математические числа без соответствующего формата. Формат создается только тогда, когда вы конвертируете decimal в string.

Вы можете использовать res.ToString(CultureInfo.InvariantCulture) для создания строки, которая использует . как десятичный разделитель.

+0

Я хотел бы иметь десятичное число, чтобы вставить его в мою базу данных, – tarek

+0

@user И где ваша проблема? – CodesInChaos

+0

проблема решена, я подумал, что я должен использовать десятичную переменную, чтобы использовать ее в команде sqlCommand, но также и строка может сделать то же самое, я использовал строку nv = textBox7.Text.Trim(). Замените (',' , '.'); – tarek

10

Как и другие комментарии и ответы, у вас есть некоторые основы для понимания в первую очередь. Может быть, я говорил некоторые вещи, которые вы уже знаете, но иметь со мной:

  1. Ваш textBox7.Text содержит string, не decimal.
  2. Если вы хотите decimal для расчетов, вы должны преобразовать его (я думаю, что вы уже получили это далеки)
  3. Поскольку res десятичной всякий раз, когда вы хотите посмотреть на его значение НЕЧТО преобразует его в string. Будь то вы пишете его до Console или вашего отладчика, когда вы наводите на него курсор. Это преобразование будет использовать ваши текущие региональные настройки. Это, поэтому вы всегда видите запятую.
  4. Чтобы показать его кому-то еще или написать где-нибудь в формате, который вы хотите, вам нужно указать формат или CultureInfo.

a) Standard Format. Пример:
Console.WriteLine(res.toString("F2"));
Это формат 123456 с 2 номера после запятой: 123456,00

б) Custom Format. Пример:
Console.WriteLine(res.toString("[##-##-##]"));
Это выведет 123456 на что-то вроде [12-34-56]

с) CultureInfo. Пример:
Console.WriteLine(res.ToString(CultureInfo.CreateSpecificCulture("nl-BE")));
Это будет выводить 1234,56, как в Бельгии: с запятой 1234,56

Кстати, я думаю ан-ГБ также выводит к запятой :-)

г) Combine. Сходить с ума! Сделайте оба! Пример:
Console.WriteLine(res.ToString("F2", CultureInfo.CreateSpecificCulture("nl-BE")));
формат 123456 до 123456,00!

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