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!)
c#
.net
formatting
string-formatting
Craig Shearer
sumber
sumber
+#;-#
, 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 iniChanges.ToString("'('#' ▲)';'('#' ▼)';''")
:! Ini menghemat banyak waktu dan ratusanif
pernyataan! :)+0;-#
daripada+#;-#;+0
jawaban ini benar-benar menyesatkan bagi saya.Hati-hati, saat menggunakan pemformatan bersyarat nilai negatif tidak secara otomatis mendapatkan tanda. Yang perlu Anda lakukan
sumber
+0;-#
memberi Anda hasil yang sama dengan kode bersih.Anda juga dapat menggunakan format string dalam string.Format (); string format dipisahkan dari indeks dengan titik dua (':')
Untuk angka {+1, -1, 0} ini memberi:
Anda juga dapat menggunakan string yang diinterpolasi alih-alih
string.Format
mendapatkan hasil yang sama:sumber
+#;-#
format untuk nilai 0+0;-#
. :)+#;-#;+0
lebih+#;-#
karena hal ini membuatnya lebih jelas bahwa 0 akan diformat sebagai 0Bertentangan dengan jawaban lain, tampaknya jika Anda ingin mendapatkan +1, -1, +0 (untuk argumen 1, -1, 0) Anda perlu menggunakan format:
atau
Jika Anda menggunakan hanya
+#;-#
itu akan menampilkan hanya+
(tidak+0
) untuk 0.Specifier Kustom "#" (di https://msdn.microsoft.com/en-us/library/0c899ak8.aspx )
Juga harap diingat bahwa jika Anda membutuhkan ketelitian desimal, Anda perlu menentukannya seperti itu:
atau, jika Anda tidak ingin nol untuk selalu muncul, seperti itu:
sumber
Untuk ekspresi numerik dari jenis apa pun:
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).
sumber
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
@ Gcores terima kasih https://stackoverflow.com/users/40256/gcores
sumber