2011-01-08 2 views
2

У меня есть целое число, которое необходимо преобразовать в значение, разделенное запятыми. Я попробовалЦелочисленное запятое целое в C#

string.Format("{0:n}", 999999) 

Однако выход я получаю 999,999.00. Я не хочу, чтобы появилась «.00» часть. Как это может быть сделано.

Заранее спасибо

+0

Должен ли он быть разделены запятой или просто тысячи разделены? Не каждая страна в мире использует запятую как разделитель тысяч. – R0MANARMY

+0

Обратите внимание, что термин «значение, разделенное запятой», как правило, является именем формата файла (.CSV), поэтому может быть запутанным, если вы попытаетесь использовать его для описания формата чисел с разделителями тысяч. – Guffa

+0

** Возможный дубликат: ** Этот вопрос уже ответил ранее: [String.Format целое число, чтобы использовать разделитель 1000 без десятичных знаков или число 0 для небольших целых чисел] (http://stackoverflow.com/q/1666346/240733). – stakx

ответ

16

Вы можете указать 0 в точности:

string x = string.Format("{0:n0}", 999999); 
Console.WriteLine(x); 

или более просто, если вы на самом деле не нужно его в большем формате строки:

string x = 999999.ToString("n0"); 
Console.WriteLine(x); 

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

string x = 999999.ToString("n0", CultureInfo.InvariantCulture); 
Console.WriteLine(x); 

Я бы лично описать это как «разделенный запятыми», кстати - который обычно используется для описания формата, который объединяет несколько разных значений. Я бы просто сказал об этом «включая запятую как тысячу разделителей».

+0

делает 0 после 'n', просто указывая 0 десятичных знаков? – R0MANARMY

+0

@ R0MANARMY: В этом случае да. В общем, это «спецификатор точности» - для формата «n», что означает количество знаков после запятой. –

+0

спасибо jon, ваши ответы такие же, как и ваша книга :) –

0
int x = 999999; 
Console.WriteLine(x.ToString("###,###")); 
+0

Если вы хотите использовать специальный разделитель, это не сработает. Таким образом, это может быть не запятая (в зависимости от вашего текущего языка). – Maxim

0

попробовать этот

decimal Rupees = 999999999900; 
string numberString = Rupees.ToString("00,00,000", 
    System.Globalization.CultureInfo.GetCultureInfo("hi-IN")); 
Response.Write(numberString); 
0

Я думаю, что это наиболее универсальный и правильно:

const int value = 1234567890; 

     NumberFormatInfo format = new NumberFormatInfo(); 
     format.NumberDecimalDigits = 0; // Int32 should not contain decimals. 
     format.NumberGroupSeparator = "'"; // Use any separator string here, for example comman as you requested. 
     format.NumberGroupSizes = new[] { 3 }; // Theoretically can be commented, but use it to specify number of digits in group directly. 

     Console.WriteLine(value.ToString("N", format)); 
Смежные вопросы