2014-09-08 11 views
5

olması (pozitif veya negatif) bir işaret ve ondalık ayırıcı, ancak sıfırın sonu yok.Biçim bir sayı daima hep</strong> sahiptir <strong>bir dize gösterimine herhangi bir sayı (tamsayı veya gerçek) biçimlendirmek istediğiniz bir işaret ve ondalık ayırıcı

Bazı örnekler:

3.14 => +3.14 
12.00 => +12. 
-78.4 => -78.4 
-3.00 => -3. 

varsayılan ToString() uygulamalarından biri ile mümkün mü, yoksa bu kendim yazmak gerekiyor? Böyle

+1

Ondalık ayırıcıyı görüntülemenin zaten uygulanma yolu yoktur, ardından n othing (AFAIK). Yani bunu kendi başınıza uygulamak zorundasınız. – Oliver

cevap

7

deneyin şey:

double x = -12.43; 
string xStr = x.ToString("+0.#####;-0.#####"); 

Ama bu ondalık noktayı sondaki görüntülemek için yardımcı olmaz.

public static string MyToString(double x) 
{ 
    return x == Math.Floor(x) 
     ? x.ToString("+0;-0;0") + CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator 
     : x.ToString("+0.####;-0.####"); 
} 
+0

Muhtemelen en iyi cevap henüz. Ancak, ondalık sayı yoksa ondalık noktayı zorlayamayacağımızı hissediyorum. –

+0

Tamam, şimdi tam olarak istediğim gibi çalışıyor! Teşekkürler! –

+1

Bunun bir uzantı yöntemi olması gerektiği varsayılırsa, 'this' anahtar sözcüğü eksik. yani, 'public static dize MyToString (bu çifte x) ' –

0

Böyle deneyebilirsiniz:

string myFormatedString = number.ToString("+#;-#"); 
+0

Bu, ondalık ayırıcıdan sonraki basamakları göstermiyor. – Dmitry

0

kullanmak istediğiniz biçim dizesi

ToString("N", CultureInfo.InvariantCulture) // Displays -12,445.68 

için ek seçenekler için here bakınız olan bu yöntemi kullanarak bu tür durumları işleyebilir dizeleri biçimlendirme

+0

Sondaki sıfır noktası yoksa, bu bitiş ondalık noktasını görüntülemez. – Nzall

İlgili konular