Apakah ada cara saya dapat menentukan string format numerik standar atau kustom untuk selalu menampilkan tanda, baik itu + ve atau -ve (meskipun apa yang harus dilakukan untuk nol, saya tidak yakin!)
Apakah ada cara saya dapat menentukan string format numerik standar atau kustom untuk selalu menampilkan tanda, baik itu + ve atau -ve (meskipun apa yang harus dilakukan untuk nol, saya tidak yakin!)
Jawaban:
Ya kamu bisa. Ada pemformatan bersyarat. Lihat pemformatan bersyarat di MSDN
misalnya:
string MyString = number.ToString("+0;-#");
Dimana setiap bagian yang dipisahkan oleh titik koma mewakili angka positif dan negatif
atau:
string MyString = number.ToString("+#;-#;0");
jika Anda tidak ingin nol memiliki tanda tambah.
+#;-#
, untuk nilai 0 saya mendapatkan hanya "+", tanpa sebenarnya 0. untuk saya, saya ingin 0 tampil sebagai "0", sehingga karya ini: +#;-#;+0
.
''
akan melakukan hal-hal hebat! Lihat ini Changes.ToString("'('#' ▲)';'('#' ▼)';''")
:! Ini menghemat banyak waktu dan ratusan if
pernyataan! :)
+0;-#
daripada +#;-#;+0
jawaban ini benar-benar menyesatkan bagi saya.
Anda juga dapat menggunakan format string dalam string.Format (); string format dipisahkan dari indeks dengan titik dua (':')
var f = string.Format("{0}, Force sign {0:+#;-#;+0}, No sign for zero {0:+#;-#;0}", number);
Untuk angka {+1, -1, 0} ini memberi:
1, Angkatan tanda +1, Tidak ada tanda untuk nol +1
-1, Angkatan tanda -1, Tidak ada tanda untuk nol -1
0, Angkatan tanda +0, Tidak ada tanda untuk nol 0
Anda juga dapat menggunakan string yang diinterpolasi alih-alih string.Format
mendapatkan hasil yang sama:
var f = $"{number}, Force sign {number:+#;-#;+0}, No sign for zero {number:+#;-#;0}";
+#;-#
format untuk nilai 0
+0;-#
. :)
+#;-#;+0
lebih +#;-#
karena hal ini membuatnya lebih jelas bahwa 0 akan diformat sebagai 0
Bertentangan dengan jawaban lain, tampaknya jika Anda ingin mendapatkan +1, -1, +0 (untuk argumen 1, -1, 0) Anda perlu menggunakan format:
String.Format("{0:+#;-#;+0}", 0)); // output: +0
atau
String.Format("{0:+0;-#}", 0)); // output: +0
Jika Anda menggunakan hanya +#;-#
itu akan menampilkan hanya +
(tidak +0
) untuk 0.
Specifier Kustom "#" (di https://msdn.microsoft.com/en-us/library/0c899ak8.aspx )
Perhatikan bahwa specifier ini tidak pernah menampilkan nol yang bukan digit signifikan, bahkan jika nol adalah satu-satunya digit dalam string. Ini akan menampilkan nol hanya jika itu adalah angka signifikan dalam jumlah yang sedang ditampilkan.
Juga harap diingat bahwa jika Anda membutuhkan ketelitian desimal, Anda perlu menentukannya seperti itu:
String.Format("{0:+0.##;-#.##}", 0)); // output: +0
atau, jika Anda tidak ingin nol untuk selalu muncul, seperti itu:
String.Format("{0:+0.00;-#.00}", 0)); // output: +0.00
Untuk ekspresi numerik dari jenis apa pun:
+###,###,###,###,###,###,###,###,###,##0.###,###,###,###,###,###,###,###,###,###;-###,###,###,###,###,###,###,###,###,##0.###,###,###,###,###,###,###,###,###,###;0
Gunakan tiga bagian untuk tiga kasus: positif, negatif, nol
Aspek lain dari contoh:
Nol tidak ditandatangani. Anda bisa menampilkannya sebagai apa saja, seperti "nol".
Nilai absolut kurang dari satu memiliki 0 di depan sebelum titik desimal. Sesuaikan dengan selera.
Jumlah digit adalah untuk nilai desimal absolut terbesar dan terkecil. Sesuaikan dengan selera.
Karakter titik desimal spesifik untuk budaya. Pengganti .NET.
Pemisah pengelompokan adalah opsional. Karakternya spesifik budaya. Pengganti .NET. (Posisi juga khusus untuk budaya tetapi hanya dikontrol oleh string format Anda.) Anda juga menggunakan karakter lain kecuali karakter khusus untuk Format (yang termasuk,. # 0).
Saya tidak dapat berkomentar, jadi saya Lakukan jawaban di sini (sistem reputasi gila ....)
Anda dapat menggunakan number.ToString ("+ 0; - #") dengan sangat baik untuk Menghasilkan UTC String TimeFormat
Di sini ditampilkan dalam kode PowerShell
"$([System.DateTime]::Now.ToString('HH:mm:ss.fff'))$($([System.TimeZoneInfo]::Local.GetUtcOffset([System.DateTime]::Now).TotalMinutes.ToString('+0;-#')))"
@ Gcores terima kasih https://stackoverflow.com/users/40256/gcores