Mengapa 0.ToString("#.##")
mengembalikan string kosong? Bukankah seharusnya 0.00
atau setidaknya 0 ?
Mengapa 0.ToString("#.##")
mengembalikan string kosong? Bukankah seharusnya 0.00
atau setidaknya 0 ?
Jawaban:
#
dalam format string menunjukkan bahwa nilainya opsional. Jika Anda ingin mendapatkan hasilnya, 0.00
Anda memerlukan yang berikut ini:
0.ToString("0.00");
Lihat di sini untuk format numerik kustom yang dapat diteruskan ke metode ini.
Karena dalam format string, #
digunakan untuk menandai placeholder karakter opsional; itu hanya digunakan jika diperlukan untuk mewakili nomor tersebut.
Jika Anda melakukan ini sebagai gantinya: 0.ToString("0.##");
Anda mendapatkan:0
Menariknya, jika Anda melakukan ini: 0.ToString("#.0#");
Anda mendapatkan:.0
Jika Anda menginginkan ketiga digit tersebut: 0.ToString("0.00");
menghasilkan:0.00
Dari komentar hingga jawaban ini, argumen Anda sepertinya,
itu harus menunjukkan '0', karena mengapa ada orang yang ingin melihat string kosong jika nilai numeriknya 0?
Tanggapannya sederhana: Anda memiliki pilihan bagaimana Anda ingin menampilkannya. Itulah gunanya string format kustom. Anda baru saja memilih string format yang salah untuk kebutuhan Anda .
Menurut dokumentasi tentang Digit Placeholder .
Jika nilai yang diformat memiliki digit di posisi di mana '#' muncul di string format, maka digit itu disalin ke string hasil. Jika tidak, tidak ada yang disimpan di posisi itu di string hasil. Penentu ini tidak pernah menampilkan karakter '0' jika itu bukan digit signifikan, meskipun '0' adalah satu-satunya digit dalam string. Ini akan menampilkan karakter '0' jika itu adalah digit signifikan dalam angka yang ditampilkan. String format "##" menyebabkan nilai dibulatkan ke digit terdekat sebelum desimal, dengan pembulatan menjauhi nol selalu digunakan. Misalnya, memformat 34.5 dengan "##" akan menghasilkan nilai 35.
Jika Anda ingin angka nol ditampilkan, gunakan Zero PlaceHolder
f nilai yang diformat memiliki digit pada posisi di mana '0' muncul dalam format string, kemudian digit tersebut disalin ke string hasil. Posisi paling kiri '0' sebelum koma desimal dan '0' paling kanan setelah koma desimal menentukan kisaran digit yang selalu ada dalam string hasil.
Penentu "00" menyebabkan nilai dibulatkan ke digit terdekat sebelum desimal, di mana pembulatan menjauhi nol selalu digunakan. Misalnya, memformat 34.5 dengan "00" akan menghasilkan nilai 35.
Coba ini 0.ToString("#,##; #,##;0")
Bagian pertama berlaku untuk nilai positif, bagian kedua berlaku untuk nilai negatif, dan bagian ketiga berlaku untuk nol.
Gunakan seperti ini:
0.ToString("#0.##")
0
setelah #
akan memastikan untuk mengatur nilai output ke 0 jika nilainya 0 selain itu akan menampilkan nilai. Jadi 0.0.ToString("#0.##")=0.00
dan10.ToString("#.##")=10.00