Yanıtlar:
String.Format("{0:n}", 1234); // Output: 1,234.00
String.Format("{0:n0}", 9876); // No digits after the decimal point. Output: 9,876
string.Format("{0:n0}", Double.Parse(yourValue));
Bunu en basit yol olarak buldum:
myInteger.ToString("N0")
int number = 1000000000;
string whatYouWant = number.ToString("#,##0");
//You get: 1,000,000,000
,
binlerce ayırıcı, örneğin boşluk veya çift dışında karakterler kullanılır .
.
.
) Bekleyen bir kültür ise , .NET otomatik olarak virgül bu ayırıcı ile değiştirir. Yine, bunun nedenini hala anlamıyorsanız, Roger tarafından gönderilen bağlantıyı okumanızı tavsiye ediyorum.
Standart çıktılar, ilgili çıktılarıyla,
Console.WriteLine("Standard Numeric Format Specifiers");
String s = String.Format("(C) Currency: . . . . . . . . {0:C}\n" +
"(D) Decimal:. . . . . . . . . {0:D}\n" +
"(E) Scientific: . . . . . . . {1:E}\n" +
"(F) Fixed point:. . . . . . . {1:F}\n" +
"(G) General:. . . . . . . . . {0:G}\n" +
" (default):. . . . . . . . {0} (default = 'G')\n" +
"(N) Number: . . . . . . . . . {0:N}\n" +
"(P) Percent:. . . . . . . . . {1:P}\n" +
"(R) Round-trip: . . . . . . . {1:R}\n" +
"(X) Hexadecimal:. . . . . . . {0:X}\n",
- 1234, -1234.565F);
Console.WriteLine(s);
Örnek çıktı (en-us kültürü):
(C) Currency: . . . . . . . . ($1,234.00)
(D) Decimal:. . . . . . . . . -1234
(E) Scientific: . . . . . . . -1.234565E+003
(F) Fixed point:. . . . . . . -1234.57
(G) General:. . . . . . . . . -1234
(default):. . . . . . . . -1234 (default = 'G')
(N) Number: . . . . . . . . . -1,234.00
(P) Percent:. . . . . . . . . -123,456.50 %
(R) Round-trip: . . . . . . . -1234.565
(X) Hexadecimal:. . . . . . . FFFFFB2E
Bu en iyi biçimdir. Tüm bu durumlarda çalışır:
String.Format( "{0:#,##0.##}", 0 ); // 0
String.Format( "{0:#,##0.##}", 0.5 ); // 0.5 - some of the formats above fail here.
String.Format( "{0:#,##0.##}", 12314 ); // 12,314
String.Format( "{0:#,##0.##}", 12314.23123 ); // 12,314.23
String.Format( "{0:#,##0.##}", 12314.2 ); // 12,314.2
String.Format( "{0:#,##0.##}", 1231412314.2 ); // 1,231,412,314.2
String.Format("{0:#,###,###.##}", MyNumber)
Bu size ilgili noktalarda virgül verecektir.
En çok oy alan cevap harikaydı ve yaklaşık 7 yıldır yardımcı oldu. C # 6.0 ve özellikle String Interpolation'ın tanıtımı ile bir neater ve IMO daha güvenli, sorulan şeyi yapmanın bir yolu var to add commas in thousands place for a number
:
var i = 5222000;
var s = $"{i:n} is the number"; // results to > 5,222,000.00 is the number
s = $"{i:n0} has no decimal"; // results to > 5,222,000 has no decimal
Değişkenin i
yer tutucunun (yani {0}
) yerine yerleştirilmesi. Böylece hangi nesnenin hangi konuma gittiğini hatırlamaya gerek yoktur. Biçimlendirme (ie :n
) değişmedi. Yeniliklerin tam bir özelliği için bu sayfaya gidebilirsiniz .
Kültürden bağımsız olarak bir "," ayırıcısını zorlamak istiyorsanız (örneğin, bir izleme veya günlük iletisinde), aşağıdaki kod işe yarayacak ve tam olarak ne yaptığınızı tökezleyen bir sonraki adama söylemenin faydası olacaktır.
int integerValue = 19400320;
string formatted = string.Format(CultureInfo.InvariantCulture, "{0:N0}", integerValue);
"19,400,320" olarak biçimlendirilmiş ayarlar
Aşağıdaki örnek, sıfır yer tutucu içeren özel biçim dizeleri kullanılarak biçimlendirilmiş birkaç değeri görüntüler.
String.Format("{0:N1}", 29255.0);
Veya
29255.0.ToString("N1")
sonuç "29.255,0"
String.Format("{0:N2}", 29255.0);
Veya
29255.0.ToString("N2")
sonuç "29.255,00"
int num = 98765432;
Console.WriteLine(string.Format("{0:#,#}", num));
Biçimlendirdiğiniz değerin sayısal olması gerektiğini unutmayın. Bir sayının dize ile temsilini alacak gibi görünmüyor ve biçim virgülle.
String.Format("0,###.###"); also works with decimal places
C # 7.1 (belki daha önce?) Bu, dize enterpolasyonu ile olması gerektiği kadar kolay ve güzel görünüyor:
var jackpot = 1000000;
var niceNumberString = $"Jackpot is {jackpot:n}";
var niceMoneyString = $"Jackpot is {jackpot:C}";
Sayıları biçimlendirmek ve isteğe bağlı olarak istenen ondalık basamaklara geçmek için böyle bir işlevi kullanabilirsiniz. Ondalık basamaklar belirtilmezse, iki ondalık basamak kullanılır.
public static string formatNumber(decimal valueIn=0, int decimalPlaces=2)
{
return string.Format("{0:n" + decimalPlaces.ToString() + "}", valueIn);
}
Ondalık kullanıyorum, ancak türü başka birine değiştirebilir veya anonim bir nesne kullanabilirsiniz. Negatif ondalık basamak değerleri için hata denetimi de ekleyebilirsiniz.
Kültürler ve potansiyel biçimlendirme sorunları hakkında artık endişelenmemem için kullanılan yöntem, onu para birimi olarak biçimlendirmem ve daha sonra para birimi sembolünü çıkarmamdı.
if (decimal.TryParse(tblCell, out result))
{
formattedValue = result.ToString("C").Substring(1);
}
fr-FR
) Veya para birimini belirtmek için birden fazla karakter kullandığı (örneğin da-DK
) veya binleri virgülle ayırmadığı (ör. anakara Avrupa).
Aşağıda Java'da iyi bir çözüm var!
NumberFormat fmt = NumberFormat.getCurrencyInstance();
System.out.println(fmt.format(n));
veya daha sağlam bir şekilde belirli bir yerin yerel ayarını almak isteyebilirsiniz, ardından aşağıdaki gibi kullanın:
int n=9999999;
Locale locale = new Locale("en", "US");
NumberFormat fmt = NumberFormat.getCurrencyInstance(locale);
System.out.println(fmt.format(n));
ABD Yerel Çıktısı: 9,999,999,00 dolar
Alman Yerel Ayarları
Locale locale = new Locale("de", "DE");
ÇIKTI: 9.999.999,00 €
Hint yerel ayarı
Locale locale = new Locale("de", "DE");
ÇIKTI: 9.999.999,00 TL
Estonya Yerel Ayarları
Locale locale = new Locale("et", "EE");
ÇIKTI: 9999999 €
Farklı çıktılarda görebileceğiniz gibi, ayırıcının virgül veya nokta veya hatta boşluk olması konusunda endişelenmenize gerek yoktur , i18n standartlarına göre biçimlendirilmiş sayıyı alabilirsiniz
locale
??
DataGridview içinde göstermek istiyorsanız, varsayılan olarak String olduğu ve ondalık olarak değiştirdiğiniz için kayan noktalı Sayı olarak kabul ettiği için türünü değiştirmeniz gerekir.
Dim dt As DataTable = New DataTable
dt.Columns.Add("col1", GetType(Decimal))
dt.Rows.Add(1)
dt.Rows.Add(10)
dt.Rows.Add(2)
DataGridView1.DataSource = dt
String.Format("{0:#,##0}", 1234);
ondalık basamak olmadan da çalışır.