Ben her zaman işareti çıktı için standart veya özel bir sayısal biçim dizesi belirtebilirsiniz herhangi bir yolu var mı, + ve veya -ve (sıfır için ne yapmalı olsa da, emin değilim!)
Ben her zaman işareti çıktı için standart veya özel bir sayısal biçim dizesi belirtebilirsiniz herhangi bir yolu var mı, + ve veya -ve (sıfır için ne yapmalı olsa da, emin değilim!)
Yanıtlar:
Evet yapabilirsin. Koşullu biçimlendirme var. Bkz . MSDN'de koşullu biçimlendirme
Örneğin:
string MyString = number.ToString("+0;-#");
Noktalı virgülle ayrılmış her bölümün pozitif ve negatif sayıları temsil ettiği
veya:
string MyString = number.ToString("+#;-#;0");
Eğer sıfırın artı işaretine sahip olmasını istemiyorsanız.
+#;-#
, 0 değerine benim için hiçbir gerçek 0'a ile ben 0 bu eserlerin yüzden, "+0" olarak görünmesini istiyorum "+" sadece olsun: +#;-#;+0
.
''
Bunu karıştırmak harika şeyler yapar! Şuna bak: Changes.ToString("'('#' ▲)';'('#' ▼)';''")
! Bana çok zaman ve yüzlerce if
ifade kazandırdı! :)
+0;-#
yerine de yapabilirsiniz . +#;-#;+0
Bu cevap benim için gerçekten yanıltıcıydı.
Ayrıca string.Format (); biçim dizesi, iki nokta üst üste işaretiyle (':') dizinden ayrılır
var f = string.Format("{0}, Force sign {0:+#;-#;+0}, No sign for zero {0:+#;-#;0}", number);
{+1, -1, 0} sayısı için:
1, kuvvet işareti +1, sıfır yok
-1 -1, kuvvet işareti -1, sıfır -1
0 için işaret yok , kuvvet işareti +0, sıfır için 0 yok
string.Format
Aynı sonucu elde etmek için enterpolasyonlu bir dize de kullanabilirsiniz :
var f = $"{number}, Force sign {number:+#;-#;+0}, No sign for zero {number:+#;-#;0}";
+#;-#
0 değeri için biçimin gerçek sonucudur
+0;-#
. :)
+#;-#;+0
üzerinde +#;-#
bu 0 +0 olarak biçimlendirilir daha anlaşılır yapar olarak
Diğer cevapların aksine +1, -1, +0 (1, -1, 0 argümanları için) almak istiyorsanız formatı kullanmanız gerektiği görülmektedir:
String.Format("{0:+#;-#;+0}", 0)); // output: +0
veya
String.Format("{0:+0;-#}", 0)); // output: +0
Eğer sadece kullanırsanız sadece 0 için (değil ) +#;-#
gösterecektir .+
+0
"#" Özel Tanımlayıcı ( https://msdn.microsoft.com/en-us/library/0c899ak8.aspx adresinde )
Dizede tek basamak olsa bile bu belirleyicinin hiçbir zaman anlamlı bir basamak olmayan bir sıfır görüntülemediğini unutmayın. Yalnızca görüntülenmekte olan sayıdaki önemli bir rakamsa sıfır görüntüler.
Ayrıca, herhangi bir ondalık duyarlığa ihtiyacınız varsa, bunu şöyle belirtmeniz gerektiğini lütfen unutmayın:
String.Format("{0:+0.##;-#.##}", 0)); // output: +0
veya her zaman görünmesi için sıfır yoksa, şöyle:
String.Format("{0:+0.00;-#.00}", 0)); // output: +0.00
Herhangi bir türün sayısal ifadesi için:
+###,###,###,###,###,###,###,###,###,##0.###,###,###,###,###,###,###,###,###,###;-###,###,###,###,###,###,###,###,###,##0.###,###,###,###,###,###,###,###,###,###;0
Üç vaka için üç parça kullanın: pozitif; negatif; sıfır
Örneğin diğer yönleri:
Sıfır imzalı değil. "Sıfır" gibi bir şey olarak gösterilmesini sağlayabilirsiniz.
Birden küçük mutlak değerler ondalık noktadan önce 0 önde gelir. Zevkinize göre ayarlayın.
Basamak sayısı en büyük ve en küçük mutlak ondalık değerler içindir. Zevkinize göre ayarlayın.
Ondalık nokta karakteri kültüre özgüdür. .NET yerine geçer.
Gruplama ayırıcılar isteğe bağlıdır. Karakter kültüre özgüdür. .NET yerine geçer. (Konumlar da kültüre özgüdür, ancak bu yalnızca biçim dizeniz tarafından kontrol edilir.) Biçim için özel karakterler (. # 0 dahil) dışında başka bir karakter de kullanırsınız.
Yorum yapamam bu yüzden burada bir cevap yap (fındık itibar sistemi ....)
UTC String TimeFormat Oluşturmak için number.ToString ("+ 0; - #") işlevini çok iyi kullanabilirsiniz
Burada PowerShell kodunda gösterildi
"$([System.DateTime]::Now.ToString('HH:mm:ss.fff'))$($([System.TimeZoneInfo]::Local.GetUtcOffset([System.DateTime]::Now).TotalMinutes.ToString('+0;-#')))"
Teşekkürler @gcores https://stackoverflow.com/users/40256/gcores