Kayan yeri 2 ondalık basamağa biçimlendirme


210

Şu anda bir müşteri web sitesi için bir satış modülü oluşturuyorum. Şimdiye kadar mükemmel bir şekilde hesaplamak için satış fiyatına sahibim ama sıkıştığım yer çıktıyı 2 ondalık basamağa biçimlendiriyor.

Verileri bir liste görünümüne bağlamak böylece şu anda bu bir değişken çağırıyorum.

Sale = float.Parse(((x.Sale_Price - (x.Sale_Price * (x.Discount_Price / 100))).ToString())),

Herkes çıktıyı 2 ondalık basamağa nasıl biçimlendireceğini gösterebilir ?? Çok teşekkürler!


Bu emin değilim ama ToString ("#. ##");
Syeda

Yanıtlar:


467

Biçimi ToStringyönteme aktarabilirsiniz , örneğin:

myFloatVariable.ToString("0.00"); //2dp Number

myFloatVariable.ToString("n2"); // 2dp Number

myFloatVariable.ToString("c2"); // 2dp currency

Standart Sayı Biçimi Dizeleri


38
"N2" ve "C2" bin ayırıcı eklerken "0.00" eklemeyecek.
Marc K

5
Emin değilseniz (ben), bir kayan nokta değerini biçimlendirmenin tüm bu yolları yuvarlama sağlar.
RenniePet

46

Yapmanız gereken ilk şey , fiyatlar decimalyerine türü kullanmaktır float. Kullanımı floato doğru en ondalık kesirleri temsil edemez, çünkü için kesinlikle kabul edilemez.

Bunu yaptıktan sonra, Decimal.Round()2 yere yuvarlamak için kullanılabilir.


36

String.Format("{0:#,###.##}", value)

C # dize biçimlendirme daha karmaşık bir örnek :

String.Format("{0:$#,##0.00;($#,##0.00);Zero}", value);

Bu, 1243.50'den geçtiğinde “1.240,00 $ output çıkacaktır. Sayı negatifse aynı formatı, parantez içinde ve sayı sıfırsa “Sıfır” dizesini verir.



4
string outString= number.ToString("####0.00");

1
Özel biçimde "0" ile "#" arasında farklılıklar vardır. "0": Sıfır varsa, karşılık gelen rakamla değiştirilir; aksi takdirde sonuç dizesinde sıfır görüntülenir. "#": Varsa "#" sembolünü karşılık gelen rakamla değiştirir; aksi takdirde, sonuç dizesinde hiçbir basamak görünmez.Referans
劉鎮 瑲

3

Daha önce de belirtildiği gibi, biçimlendirilmiş bir sonuç kullanmanız gerekecektir; hangi tüm aracılığıyla yapılır Write(), WriteLine(), Format(), ve ToString()yöntemlerle.

Daha önce bahsedilmeyen şey, belirli sayıda ondalık basamağa izin veren Sabit Nokta Biçimidir . Bir 'F' kullanır ve 'F'yi izleyen sayı, örneklerde gösterildiği gibi, çıkarılan ondalık basamak sayısıdır.

Console.WriteLine("{0:F2}", 12);    // 12.00 - two decimal places
Console.WriteLine("{0:F0}", 12.3);  // 12 - ommiting fractions

2

Bu kullanmak istediğiniz durumlar içindir enterpolasyonlu dizeler . Aslında bunu gönderiyorum, çünkü deneme yanılmadan bıktım ve sonunda her skalayı biçimlendirmem gerektiğinde tonlarca dokümanı kaydırıyorum.

$"{1234.5678:0.00}"        "1234.57"        2 decimal places, notice that value is rounded
$"{1234.5678,10:0.00}"     "   1234.57"     right-aligned
$"{1234.5678,-10:0.00}"    "1234.57   "     left-aligned
$"{1234.5678:0.#####}"     "1234.5678"      5 optional digits after the decimal point
$"{1234.5678:0.00000}"     "1234.56780"     5 forced digits AFTER the decimal point, notice the trailing zero
$"{1234.5678:00000.00}"    "01234.57"       5 forced digits BEFORE the decimal point, notice the leading zero
$"{1234.5612:0}"           "1235"           as integer, notice that value is rounded
$"{1234.5678:F2}"          "1234.57"        standard fixed-point
$"{1234.5678:F5}"          "1234.56780"     5 digits after the decimal point, notice the trailing zero
$"{1234.5678:g2}"          "1.2e+03"        standard general with 2 meaningful digits, notice "e"
$"{1234.5678:G2}"          "1.2E+03"        standard general with 2 meaningful digits, notice "E"
$"{1234.5678:G3}"          "1.23E+03"       standard general with 3 meaningful digits
$"{1234.5678:G5}"          "1234.6"         standard general with 5 meaningful digits
$"{1234.5678:e2}"          "1.23e+003"      standard exponential with 2 digits after the decimal point, notice "e"
$"{1234.5678:E3}"          "1.235E+003"     standard exponential with 3 digits after the decimal point, notice "E"
$"{1234.5678:N2}"          "1,234.57"       standard numeric, notice the comma
$"{1234.5678:C2}"          "$1,234.57"      standard currency, notice the dollar sign
$"{1234.5678:P2}"          "123,456.78 %"   standard percent, notice that value is multiplied by 100
$"{1234.5678:2}"           "2"              :)

Performans Uyarısı

Enterpolasyonlu dizeler yavaş. Benim durumumda bu sipariş (hızlı yavaş):

  1. value.ToString(format)+" blah blah"
  2. string.Format("{0:format} blah blah", value)
  3. $"{value:format} blah blah"
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.