String format numerik kustom
Anda dapat membuat string format numerik kustom, yang terdiri dari satu atau beberapa penentu numerik kustom, untuk menentukan cara memformat data numerik. String format numerik kustom adalah string format apa pun yang bukan string format numerik standar.
String format numerik kustom didukung oleh beberapa kelebihan beban metode ToString
dari semua jenis numerik. Misalnya, Anda dapat menyediakan string format numerik ke metode ToString(String) dan ToString(String, IFormatProvider) dari jenis Int32. String format numerik kustom juga didukung oleh fitur pemformatan komposit .NET, yang digunakan oleh beberapa metode Write
dan WriteLine
dari kelas Console dan StreamWriter, metode String.Format, dan metode StringBuilder.AppendFormat. Fitur Interpolasi string juga mendukung string format numerik kustom.
Tip
Anda dapat mengunduh Utilitas Pemformatan, aplikasi .NET Core Formulir Windows yang memungkinkan Anda menerapkan string format ke nilai numerik atau tanggal dan waktu dan menampilkan string hasil. Kode sumber tersedia untuk C# dan Visual Basic.
Tabel berikut ini menjelaskan penentu format numerik kustom dan menampilkan output sampel yang dihasilkan oleh setiap penentu format. Lihat bagian Catatan untuk informasi tambahan tentang menggunakan string format numerik kustom, dan bagian Contoh untuk ilustrasi komprehensif penggunaannya.
Penentu format | Nama | Deskripsi | Contoh |
---|---|---|---|
"0" | Tempat penampung nol | Mengganti nol dengan digit yang sesuai jika ada; jika tidak, nol muncul dalam string hasil. Informasi selengkapnya: Penentu Kustom "0". |
1234.5678 ("00000") -> 01235 0.45678 ("0.00", en-US) -> 0.46 0.45678 ("0.00", fr-FR) -> 0,46 |
"#" | Tempat penampung digit | Mengganti simbol “#” dengan digit yang sesuai jika ada; jika tidak, tidak ada digit yang muncul dalam string hasil. Perhatikan bahwa tidak ada digit yang muncul dalam string hasil jika digit yang sesuai dalam string input adalah 0 yang tidak signifikan. Misalnya, 0003 ("####") -> 3. Informasi selengkapnya: Penentu Kustom "#". |
1234.5678 ("#####") -> 1235 0.45678 ("#.##", en-US) -> .46 0.45678 ("#.##", fr-FR) -> ,46 |
"." | Titik desimal | Menentukan lokasi pemisah desimal dalam string hasil. Informasi selengkapnya: Penentu Kustom ".". |
0.45678 ("0.00", en-US) -> 0.46 0.45678 ("0.00", fr-FR) -> 0,46 |
"," | Pemisah grup dan penskalaan angka | Berfungsi sebagai pemisah grup dan penentu penskalaan angka. Sebagai pemisah grup, ia menyisipkan karakter pemisah grup lokal di antara setiap grup. Sebagai penentu penskalaan angka, ia membagi angka dengan 1000 untuk setiap koma yang ditentukan. Informasi selengkapnya: Penentu Kustom ",". |
Penentu pemisah grup: 2147483647 ("##,#", en-US) -> 2,147,483,647 2147483647 ("##,#", es-ES) -> 2.147.483.647 Penentu penskalaan: 2147483647 ("#,#,,", en-US) -> 2,147 2147483647 ("#,#,,", es-ES) -> 2.147 |
"%" | Tempat penampung persentase | Mengalikan angka dengan 100 dan menyisipkan simbol persentase terlokalisasi dalam string hasil. Informasi selengkapnya: Penentu Kustom "%". |
0.3697 ("%#0.00", en-US) -> %36.97 0.3697 ("%#0.00", el-GR) -> %36,97 0.3697 ("##.0 %", en-US) -> 37.0 % 0.3697 ("##.0 %", el-GR) -> 37,0 % |
"‰" | Tempat penampung permil (perseribu) | Mengalikan angka dengan 1000 dan menyisipkan simbol permil terlokalisasi dalam string hasil. Informasi selengkapnya: Penentu Kustom "‰". |
0.03697 ("#0.00‰", en-US) -> 36.97‰ 0.03697 ("#0.00‰", ru-RU) -> 36,97‰ |
"E0" "E+0" "E-0" "e0" "e+0" "e-0" |
Notasi eksponensial | Jika diikuti oleh setidaknya satu 0 (nol), format hasilnya menggunakan notasi eksponensial. Kasus "E" atau "e" mengindikasikan kasus simbol eksponen dalam string hasil. Jumlah nol setelah karakter "E" atau "e" menentukan jumlah minimum digit dalam eksponen. Tanda plus (+) mengindikasikan bahwa karakter tanda selalu mendahului eksponen. Tanda minus (-) mengindikasikan bahwa karakter tanda hanya mendahului eksponen negatif. Informasi selengkapnya: Penentu Kustom "E" dan "e". |
987654 ("#0.0e0") -> 98.8e4 1503.92311 ("0.0##e+00") -> 1.504e+03 1.8901385E-16 ("0.0e+00") -> 1.9e-16 |
"\" | Karakter escape | Menyebabkan karakter berikutnya ditafsirkan sebagai harfiah bukannya sebagai penentu format kustom. Informasi selengkapnya: Karakter Escape "\". |
987654 ("\###00\#") -> #987654# |
'string' "string" |
Pemisah string harfiah | Mengindikasikan bahwa karakter terlampir harus disalin ke string hasil tanpa diubah. Informasi selengkapnya: Harfiah karakter. |
68 ("# 'derajat'") -> 68 derajat 68 ("#' derajat'") -> 68 derajat |
; | Pemisah bagian | Mendefinisikan bagian dengan string format terpisah untuk angka positif, negatif, dan nol. Informasi selengkapnya: Pemisah Bagian ";". |
12.345 ("#0.0#;(#0.0#);-\0-") -> 12.35 0 ("#0.0#;(#0.0#);-\0-") -> -0- -12.345 ("#0.0#;(#0.0#);-\0-") -> (12.35) 12.345 ("#0.0#;(#0.0#)") -> 12.35 0 ("#0.0#;(#0.0#)") -> 0.0 -12.345 ("#0.0#;(#0.0#)") -> (12.35) |
Lainnya | Semua karakter lainnya | Karakter disalin ke string hasil tanpa diubah. Informasi selengkapnya: Harfiah karakter. |
68 ("# °") -> 68 ° |
Bagian berikut memberikan informasi terperinci tentang masing-masing penentu format numerik kustom.
Catatan
Beberapa contoh C# dalam artikel ini dijalankan di Try.NET di barisan kode runner dan playground. Pilih tombol Jalankan untuk menjalankan contoh di jendela interaktif. Setelah Anda menjalankan kode, Anda dapat memodifikasinya dan menjalankan kode yang dimodifikasi dengan memilih Jalankan lagi. Kode yang dimodifikasi berjalan di jendela interaktif atau, jika kompilasi gagal, jendela interaktif menampilkan semua pesan kesalahan pengompilasi C#.
Penentu kustom "0"
Penentu format kustom "0" berfungsi sebagai simbol tempat penampung nol. Jika nilai yang sedang diformat memiliki digit dalam posisi di mana nol muncul dalam string format, digit tersebut disalin ke string hasil; jika tidak, nol muncul dalam string hasil. Posisi nol paling kiri sebelum titik desimal dan nol paling kanan setelah titik desimal menentukan kisaran digit yang selalu ada dalam string hasil.
Penentu "00" menyebabkan nilai dibulatkan ke digit terdekat sebelum desimal, di mana pembulatan menjauh dari nol selalu digunakan. Misalnya, pemformatan 34,5 dengan "00" akan menghasilkan nilai 35.
Contoh berikut menampilkan beberapa nilai yang diformat dengan menggunakan string format kustom yang menyertakan tempat penampung nol.
double value;
value = 123;
Console::WriteLine(value.ToString("00000"));
Console::WriteLine(String::Format("{0:00000}", value));
// Displays 00123
value = 1.2;
Console::WriteLine(value.ToString("0.00", CultureInfo::InvariantCulture));
Console::WriteLine(String::Format(CultureInfo::InvariantCulture,
"{0:0.00}", value));
// Displays 1.20
Console::WriteLine(value.ToString("00.00", CultureInfo::InvariantCulture));
Console::WriteLine(String::Format(CultureInfo::InvariantCulture,
"{0:00.00}", value));
// Displays 01.20
CultureInfo^ daDK = CultureInfo::CreateSpecificCulture("da-DK");
Console::WriteLine(value.ToString("00.00", daDK));
Console::WriteLine(String::Format(daDK, "{0:00.00}", value));
// Displays 01,20
value = .56;
Console::WriteLine(value.ToString("0.0", CultureInfo::InvariantCulture));
Console::WriteLine(String::Format(CultureInfo::InvariantCulture,
"{0:0.0}", value));
// Displays 0.6
value = 1234567890;
Console::WriteLine(value.ToString("0,0", CultureInfo::InvariantCulture));
Console::WriteLine(String::Format(CultureInfo::InvariantCulture,
"{0:0,0}", value));
// Displays 1,234,567,890
CultureInfo^ elGR = CultureInfo::CreateSpecificCulture("el-GR");
Console::WriteLine(value.ToString("0,0", elGR));
Console::WriteLine(String::Format(elGR, "{0:0,0}", value));
// Displays 1.234.567.890
value = 1234567890.123456;
Console::WriteLine(value.ToString("0,0.0", CultureInfo::InvariantCulture));
Console::WriteLine(String::Format(CultureInfo::InvariantCulture,
"{0:0,0.0}", value));
// Displays 1,234,567,890.1
value = 1234.567890;
Console::WriteLine(value.ToString("0,0.00", CultureInfo::InvariantCulture));
Console::WriteLine(String::Format(CultureInfo::InvariantCulture,
"{0:0,0.00}", value));
// Displays 1,234.57
double value;
value = 123;
Console.WriteLine(value.ToString("00000"));
Console.WriteLine(String.Format("{0:00000}", value));
// Displays 00123
value = 1.2;
Console.WriteLine(value.ToString("0.00", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:0.00}", value));
// Displays 1.20
Console.WriteLine(value.ToString("00.00", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:00.00}", value));
// Displays 01.20
CultureInfo daDK = CultureInfo.CreateSpecificCulture("da-DK");
Console.WriteLine(value.ToString("00.00", daDK));
Console.WriteLine(String.Format(daDK, "{0:00.00}", value));
// Displays 01,20
value = .56;
Console.WriteLine(value.ToString("0.0", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:0.0}", value));
// Displays 0.6
value = 1234567890;
Console.WriteLine(value.ToString("0,0", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:0,0}", value));
// Displays 1,234,567,890
CultureInfo elGR = CultureInfo.CreateSpecificCulture("el-GR");
Console.WriteLine(value.ToString("0,0", elGR));
Console.WriteLine(String.Format(elGR, "{0:0,0}", value));
// Displays 1.234.567.890
value = 1234567890.123456;
Console.WriteLine(value.ToString("0,0.0", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:0,0.0}", value));
// Displays 1,234,567,890.1
value = 1234.567890;
Console.WriteLine(value.ToString("0,0.00", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:0,0.00}", value));
// Displays 1,234.57
Dim value As Double
value = 123
Console.WriteLine(value.ToString("00000"))
Console.WriteLine(String.Format("{0:00000}", value))
' Displays 00123
value = 1.2
Console.WriteLine(value.ToString("0.00", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:0.00}", value))
' Displays 1.20
Console.WriteLine(value.ToString("00.00", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:00.00}", value))
' Displays 01.20
Dim daDK As CultureInfo = CultureInfo.CreateSpecificCulture("da-DK")
Console.WriteLine(value.ToString("00.00", daDK))
Console.WriteLine(String.Format(daDK, "{0:00.00}", value))
' Displays 01,20
value = .56
Console.WriteLine(value.ToString("0.0", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:0.0}", value))
' Displays 0.6
value = 1234567890
Console.WriteLine(value.ToString("0,0", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:0,0}", value))
' Displays 1,234,567,890
Dim elGR As CultureInfo = CultureInfo.CreateSpecificCulture("el-GR")
Console.WriteLine(value.ToString("0,0", elGR))
Console.WriteLine(String.Format(elGR, "{0:0,0}", value))
' Displays 1.234.567.890
value = 1234567890.123456
Console.WriteLine(value.ToString("0,0.0", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:0,0.0}", value))
' Displays 1,234,567,890.1
value = 1234.567890
Console.WriteLine(value.ToString("0,0.00", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:0,0.00}", value))
' Displays 1,234.57
Penentu kustom "#"
Penentu format kustom "#" berfungsi sebagai simbol tempat penampung digit. Jika nilai yang sedang diformat memiliki digit di posisi di mana simbol "#" muncul dalam string format, digit tersebut disalin ke string hasil. Jika tidak, tidak ada yang disimpan dalam posisi itu dalam string hasil.
Perhatikan bahwa penentu 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 digit yang signifikan dalam angka yang sedang ditampilkan.
String format "##" menyebabkan nilai dibulatkan ke digit terdekat sebelum desimal, di mana pembulatan menjauh dari nol selalu digunakan. Misalnya, pemformatan 34,5 dengan "##" akan menghasilkan nilai 35.
Contoh berikut menampilkan beberapa nilai yang diformat dengan menggunakan string format kustom yang menyertakan tempat penampung digit.
double value;
value = 1.2;
Console::WriteLine(value.ToString("#.##", CultureInfo::InvariantCulture));
Console::WriteLine(String::Format(CultureInfo::InvariantCulture,
"{0:#.##}", value));
// Displays 1.2
value = 123;
Console::WriteLine(value.ToString("#####"));
Console::WriteLine(String::Format("{0:#####}", value));
// Displays 123
value = 123456;
Console::WriteLine(value.ToString("[##-##-##]"));
Console::WriteLine(String::Format("{0:[##-##-##]}", value));
// Displays [12-34-56]
value = 1234567890;
Console::WriteLine(value.ToString("#"));
Console::WriteLine(String::Format("{0:#}", value));
// Displays 1234567890
Console::WriteLine(value.ToString("(###) ###-####"));
Console::WriteLine(String::Format("{0:(###) ###-####}", value));
// Displays (123) 456-7890
double value;
value = 1.2;
Console.WriteLine(value.ToString("#.##", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:#.##}", value));
// Displays 1.2
value = 123;
Console.WriteLine(value.ToString("#####"));
Console.WriteLine(String.Format("{0:#####}", value));
// Displays 123
value = 123456;
Console.WriteLine(value.ToString("[##-##-##]"));
Console.WriteLine(String.Format("{0:[##-##-##]}", value));
// Displays [12-34-56]
value = 1234567890;
Console.WriteLine(value.ToString("#"));
Console.WriteLine(String.Format("{0:#}", value));
// Displays 1234567890
Console.WriteLine(value.ToString("(###) ###-####"));
Console.WriteLine(String.Format("{0:(###) ###-####}", value));
// Displays (123) 456-7890
Dim value As Double
value = 1.2
Console.WriteLine(value.ToString("#.##", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:#.##}", value))
' Displays 1.2
value = 123
Console.WriteLine(value.ToString("#####"))
Console.WriteLine(String.Format("{0:#####}", value))
' Displays 123
value = 123456
Console.WriteLine(value.ToString("[##-##-##]"))
Console.WriteLine(String.Format("{0:[##-##-##]}", value))
' Displays [12-34-56]
value = 1234567890
Console.WriteLine(value.ToString("#"))
Console.WriteLine(String.Format("{0:#}", value))
' Displays 1234567890
Console.WriteLine(value.ToString("(###) ###-####"))
Console.WriteLine(String.Format("{0:(###) ###-####}", value))
' Displays (123) 456-7890
Untuk mengembalikan string hasil di mana digit absen atau nol di depannya digantikan oleh spasi, gunakan fitur pemformatan komposit dan tentukan lebar bidang, seperti yang diilustrasikan contoh berikut.
using namespace System;
void main()
{
Double value = .324;
Console::WriteLine("The value is: '{0,5:#.###}'", value);
}
// The example displays the following output if the current culture
// is en-US:
// The value is: ' .324'
using System;
public class SpaceOrDigit
{
public static void Main()
{
Double value = .324;
Console.WriteLine("The value is: '{0,5:#.###}'", value);
}
}
// The example displays the following output if the current culture
// is en-US:
// The value is: ' .324'
Module SpaceExample
Public Sub Main()
Dim value As Double = 0.324
Console.WriteLine("The value is: '{0,5:#.###}'", value)
End Sub
End Module
' The example displays the following output if the current culture
' is en-US:
' The value is: ' .324'
Penentu kustom "."
Penentu format kustom "." menyisipkan pemisah desimal yang dilokalkan ke dalam string hasil. Tanda titik (atau koma dalam format bahasa Indonesia) pertama dalam string format menentukan lokasi pemisah desimal dalam nilai yang diformat; setiap titik tambahan diabaikan. Jika penentu format berakhir dengan "." hanya digit signifikan yang diformat ke dalam string hasil.
Karakter yang digunakan sebagai pemisah desimal dalam string hasil tidak selalu merupakan titik; itu ditentukan oleh properti NumberDecimalSeparator dari objek NumberFormatInfo yang mengontrol pemformatan.
Contoh berikut menggunakan penentu format "." untuk menentukan lokasi titik desimal dalam beberapa string hasil.
double value;
value = 1.2;
Console::WriteLine(value.ToString("0.00", CultureInfo::InvariantCulture));
Console::WriteLine(String::Format(CultureInfo::InvariantCulture,
"{0:0.00}", value));
// Displays 1.20
Console::WriteLine(value.ToString("00.00", CultureInfo::InvariantCulture));
Console::WriteLine(String::Format(CultureInfo::InvariantCulture,
"{0:00.00}", value));
// Displays 01.20
Console::WriteLine(value.ToString("00.00",
CultureInfo::CreateSpecificCulture("da-DK")));
Console::WriteLine(String::Format(CultureInfo::CreateSpecificCulture("da-DK"),
"{0:00.00}", value));
// Displays 01,20
value = .086;
Console::WriteLine(value.ToString("#0.##%", CultureInfo::InvariantCulture));
Console::WriteLine(String::Format(CultureInfo::InvariantCulture,
"{0:#0.##%}", value));
// Displays 8.6%
value = 86000;
Console::WriteLine(value.ToString("0.###E+0", CultureInfo::InvariantCulture));
Console::WriteLine(String::Format(CultureInfo::InvariantCulture,
"{0:0.###E+0}", value));
// Displays 8.6E+4
double value;
value = 1.2;
Console.WriteLine(value.ToString("0.00", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:0.00}", value));
// Displays 1.20
Console.WriteLine(value.ToString("00.00", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:00.00}", value));
// Displays 01.20
Console.WriteLine(value.ToString("00.00",
CultureInfo.CreateSpecificCulture("da-DK")));
Console.WriteLine(String.Format(CultureInfo.CreateSpecificCulture("da-DK"),
"{0:00.00}", value));
// Displays 01,20
value = .086;
Console.WriteLine(value.ToString("#0.##%", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:#0.##%}", value));
// Displays 8.6%
value = 86000;
Console.WriteLine(value.ToString("0.###E+0", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:0.###E+0}", value));
// Displays 8.6E+4
Dim value As Double
value = 1.2
Console.WriteLine(value.ToString("0.00", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:0.00}", value))
' Displays 1.20
Console.WriteLine(value.ToString("00.00", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:00.00}", value))
' Displays 01.20
Console.WriteLine(value.ToString("00.00", _
CultureInfo.CreateSpecificCulture("da-DK")))
Console.WriteLine(String.Format(CultureInfo.CreateSpecificCulture("da-DK"),
"{0:00.00}", value))
' Displays 01,20
value = .086
Console.WriteLine(value.ToString("#0.##%", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:#0.##%}", value))
' Displays 8.6%
value = 86000
Console.WriteLine(value.ToString("0.###E+0", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:0.###E+0}", value))
' Displays 8.6E+4
Penentu kustom ","
Karakter “,” berfungsi sebagai pemisah grup dan penentu penskalaan angka.
Pemisah grup: Jika satu atau lebih koma ditentukan antara dua tempat penampung digit (0 atau #) yang memformat digit integral angka, karakter pemisah grup disisipkan di antara setiap grup angka di bagian integral output.
Properti NumberGroupSeparator dan NumberGroupSizes dari objek NumberFormatInfo saat ini menentukan karakter yang digunakan sebagai pemisah grup angka dan ukuran setiap grup angka. Misalnya, jika string "#,#" dan kultur invarian digunakan untuk memformat angka 1000, outputnya adalah "1,000".
Penentu penskalaan angka: Jika satu atau lebih koma ditentukan segera di sebelah kiri titik desimal eksplisit atau implisit, angka yang akan diformat dibagi dengan 1000 untuk setiap koma. Misalnya, jika string "0,," digunakan untuk memformat angka 100 juta, outputnya adalah "100".
Anda dapat menggunakan pemisah grup dan penentu penskalaan angka dalam string format yang sama. Misalnya, jika string "#,0,," dan kultur invarian digunakan untuk memformat angka satu miliar, outputnya adalah "1,000".
Contoh berikut menggambarkan penggunaan koma sebagai pemisah grup.
double value = 1234567890;
Console::WriteLine(value.ToString("#,#", CultureInfo::InvariantCulture));
Console::WriteLine(String::Format(CultureInfo::InvariantCulture,
"{0:#,#}", value));
// Displays 1,234,567,890
Console::WriteLine(value.ToString("#,##0,,", CultureInfo::InvariantCulture));
Console::WriteLine(String::Format(CultureInfo::InvariantCulture,
"{0:#,##0,,}", value));
// Displays 1,235
double value = 1234567890;
Console.WriteLine(value.ToString("#,#", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:#,#}", value));
// Displays 1,234,567,890
Console.WriteLine(value.ToString("#,##0,,", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:#,##0,,}", value));
// Displays 1,235
Dim value As Double = 1234567890
Console.WriteLine(value.ToString("#,#", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:#,#}", value))
' Displays 1,234,567,890
Console.WriteLine(value.ToString("#,##0,,", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:#,##0,,}", value))
' Displays 1,235
Contoh berikut menggambarkan penggunaan koma sebagai penentu untuk penskalaan angka.
double value = 1234567890;
Console::WriteLine(value.ToString("#,,", CultureInfo::InvariantCulture));
Console::WriteLine(String::Format(CultureInfo::InvariantCulture,
"{0:#,,}", value));
// Displays 1235
Console::WriteLine(value.ToString("#,,,", CultureInfo::InvariantCulture));
Console::WriteLine(String::Format(CultureInfo::InvariantCulture,
"{0:#,,,}", value));
// Displays 1
Console::WriteLine(value.ToString("#,##0,,", CultureInfo::InvariantCulture));
Console::WriteLine(String::Format(CultureInfo::InvariantCulture,
"{0:#,##0,,}", value));
// Displays 1,235
double value = 1234567890;
Console.WriteLine(value.ToString("#,,", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:#,,}", value));
// Displays 1235
Console.WriteLine(value.ToString("#,,,", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:#,,,}", value));
// Displays 1
Console.WriteLine(value.ToString("#,##0,,", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:#,##0,,}", value));
// Displays 1,235
Dim value As Double = 1234567890
Console.WriteLine(value.ToString("#,,", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture, "{0:#,,}", value))
' Displays 1235
Console.WriteLine(value.ToString("#,,,", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:#,,,}", value))
' Displays 1
Console.WriteLine(value.ToString("#,##0,,", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:#,##0,,}", value))
' Displays 1,235
Penentu kustom "%"
Tanda persen (%) dalam string format menyebabkan angka dikalikan dengan 100 sebelum diformat. Simbol persen terlokalisasi dimasukkan dalam angka di lokasi di mana % muncul dalam string format. Karakter persen yang digunakan ditentukan oleh properti PercentSymbol dari objek NumberFormatInfo saat ini.
Contoh berikut menentukan beberapa string format kustom yang menyertakan penentu kustom "%".
double value = .086;
Console::WriteLine(value.ToString("#0.##%", CultureInfo::InvariantCulture));
Console::WriteLine(String::Format(CultureInfo::InvariantCulture,
"{0:#0.##%}", value));
// Displays 8.6%
double value = .086;
Console.WriteLine(value.ToString("#0.##%", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:#0.##%}", value));
// Displays 8.6%
Dim value As Double = .086
Console.WriteLine(value.ToString("#0.##%", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:#0.##%}", value))
' Displays 8.6%
Penentu kustom "‰"
Karakter permil (‰ or \u2030) dalam string format menyebabkan angka dikalikan dengan 1000 sebelum diformat. Simbol permil yang sesuai dimasukkan dalam string yang dikembalikan di lokasi di mana simbol ‰ muncul dalam string format. Karakter permil yang digunakan didefinisikan oleh properti NumberFormatInfo.PerMilleSymbol dari objek yang menyediakan informasi pemformatan spesifik kultur.
Contoh berikut menentukan beberapa string format kustom yang menyertakan penentu kustom "‰".
double value = .00354;
String^ perMilleFmt = "#0.## " + '\u2030';
Console::WriteLine(value.ToString(perMilleFmt, CultureInfo::InvariantCulture));
Console::WriteLine(String::Format(CultureInfo::InvariantCulture,
"{0:" + perMilleFmt + "}", value));
// Displays 3.54‰
double value = .00354;
string perMilleFmt = "#0.## " + '\u2030';
Console.WriteLine(value.ToString(perMilleFmt, CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:" + perMilleFmt + "}", value));
// Displays 3.54‰
Dim value As Double = .00354
Dim perMilleFmt As String = "#0.## " & ChrW(&h2030)
Console.WriteLine(value.ToString(perMilleFmt, CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:" + perMilleFmt + "}", value))
' Displays 3.54 ‰
Penentu kustom "E" dan "e"
Jika salah satu string "E", "E+", "E-", "e", "e+", atau "e-" ada dalam string format dan diikuti segera dengan setidaknya satu nol, angka tersebut diformat dengan menggunakan notasi ilmiah dengan "E" atau "e" yang dimasukkan antara angka dan eksponen. Jumlah nol yang mengikuti indikator notasi ilmiah menentukan jumlah minimum digit yang akan dikeluarkan untuk eksponen. Format "E+" dan "e+" mengindikasikan bahwa tanda plus atau tanda minus harus selalu mendahului eksponen. Format "E", "E-", "e", atau "e-" mengindikasikan bahwa karakter tanda harus mendahului eksponen negatif saja.
Contoh berikut memformat beberapa nilai numerik menggunakan penentu untuk notasi ilmiah.
double value = 86000;
Console::WriteLine(value.ToString("0.###E+0", CultureInfo::InvariantCulture));
Console::WriteLine(String::Format(CultureInfo::InvariantCulture,
"{0:0.###E+0}", value));
// Displays 8.6E+4
Console::WriteLine(value.ToString("0.###E+000", CultureInfo::InvariantCulture));
Console::WriteLine(String::Format(CultureInfo::InvariantCulture,
"{0:0.###E+000}", value));
// Displays 8.6E+004
Console::WriteLine(value.ToString("0.###E-000", CultureInfo::InvariantCulture));
Console::WriteLine(String::Format(CultureInfo::InvariantCulture,
"{0:0.###E-000}", value));
// Displays 8.6E004
double value = 86000;
Console.WriteLine(value.ToString("0.###E+0", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:0.###E+0}", value));
// Displays 8.6E+4
Console.WriteLine(value.ToString("0.###E+000", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:0.###E+000}", value));
// Displays 8.6E+004
Console.WriteLine(value.ToString("0.###E-000", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:0.###E-000}", value));
// Displays 8.6E004
Dim value As Double = 86000
Console.WriteLine(value.ToString("0.###E+0", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:0.###E+0}", value))
' Displays 8.6E+4
Console.WriteLine(value.ToString("0.###E+000", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:0.###E+000}", value))
' Displays 8.6E+004
Console.WriteLine(value.ToString("0.###E-000", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:0.###E-000}", value))
' Displays 8.6E004
Karakter escape "\"
Simbol "#", "0", ".", ",", "%", dan "‰" dalam string format ditafsirkan sebagai penentu format daripada sebagai karakter harfiah. Tergantung pada posisinya dalam string format kustom, huruf besar dan huruf kecil "E" serta simbol + dan - juga dapat ditafsirkan sebagai penentu format.
Untuk mencegah karakter ditafsirkan sebagai penentu format, Anda dapat mendahuluinya dengan tanda miring terbalik, yang merupakan karakter escape. Karakter escape menandakan bahwa karakter berikut adalah karakter harfiah yang harus dimasukkan dalam string hasil tanpa diubah.
Untuk menyertakan garis miring terbalik dalam string hasil, Anda harus meng-escape-nya dengan garis miring terbaik lain (\\
).
Catatan
Beberapa pengompilasi, seperti pengompilasi C ++ dan C #, juga dapat menafsirkan satu karakter garis miring terbalik sebagai karakter escape. Untuk memastikan bahwa string ditafsirkan dengan benar saat memformat, Anda dapat menggunakan karakter harfiah string verbatim (karakter @) sebelum string di C #, atau menambahkan karakter garis miring terbalik lain sebelum setiap garis miring terbalik di C # dan C ++. Contoh C# berikut menggambarkan kedua pendekatan tersebut.
Contoh berikut menggunakan karakter escape untuk mencegah operasi pemformatan menginterpretasikan karakter "#", "0", dan "\" sebagai karakter escape atau penentu format. Contoh C # menggunakan garis miring terbalik tambahan untuk memastikan bahwa garis miring terbalik ditafsirkan sebagai karakter harfiah.
int value = 123;
Console::WriteLine(value.ToString("\\#\\#\\# ##0 dollars and \\0\\0 cents \\#\\#\\#"));
Console::WriteLine(String::Format("{0:\\#\\#\\# ##0 dollars and \\0\\0 cents \\#\\#\\#}",
value));
// Displays ### 123 dollars and 00 cents ###
Console::WriteLine(value.ToString("\\#\\#\\# ##0 dollars and \0\0 cents \\#\\#\\#"));
Console::WriteLine(String::Format("{0:\\#\\#\\# ##0 dollars and \0\0 cents \\#\\#\\#}",
value));
// Displays ### 123 dollars and 00 cents ###
Console::WriteLine(value.ToString("\\\\\\\\\\\\ ##0 dollars and \\0\\0 cents \\\\\\\\\\\\"));
Console::WriteLine(String::Format("{0:\\\\\\\\\\\\ ##0 dollars and \\0\\0 cents \\\\\\\\\\\\}",
value));
// Displays \\\ 123 dollars and 00 cents \\\
Console::WriteLine(value.ToString("\\\\\\ ##0 dollars and \0\0 cents \\\\\\"));
Console::WriteLine(String::Format("{0:\\\\\\ ##0 dollars and \0\0 cents \\\\\\}",
value));
// Displays \\\ 123 dollars and 00 cents \\\
int value = 123;
Console.WriteLine(value.ToString("\\#\\#\\# ##0 dollars and \\0\\0 cents \\#\\#\\#"));
Console.WriteLine(String.Format("{0:\\#\\#\\# ##0 dollars and \\0\\0 cents \\#\\#\\#}",
value));
// Displays ### 123 dollars and 00 cents ###
Console.WriteLine(value.ToString(@"\#\#\# ##0 dollars and \0\0 cents \#\#\#"));
Console.WriteLine(String.Format(@"{0:\#\#\# ##0 dollars and \0\0 cents \#\#\#}",
value));
// Displays ### 123 dollars and 00 cents ###
Console.WriteLine(value.ToString("\\\\\\\\\\\\ ##0 dollars and \\0\\0 cents \\\\\\\\\\\\"));
Console.WriteLine(String.Format("{0:\\\\\\\\\\\\ ##0 dollars and \\0\\0 cents \\\\\\\\\\\\}",
value));
// Displays \\\ 123 dollars and 00 cents \\\
Console.WriteLine(value.ToString(@"\\\\\\ ##0 dollars and \0\0 cents \\\\\\"));
Console.WriteLine(String.Format(@"{0:\\\\\\ ##0 dollars and \0\0 cents \\\\\\}",
value));
// Displays \\\ 123 dollars and 00 cents \\\
Dim value As Integer = 123
Console.WriteLine(value.ToString("\#\#\# ##0 dollars and \0\0 cents \#\#\#"))
Console.WriteLine(String.Format("{0:\#\#\# ##0 dollars and \0\0 cents \#\#\#}",
value))
' Displays ### 123 dollars and 00 cents ###
Console.WriteLine(value.ToString("\\\\\\ ##0 dollars and \0\0 cents \\\\\\"))
Console.WriteLine(String.Format("{0:\\\\\\ ##0 dollars and \0\0 cents \\\\\\}",
value))
' Displays \\\ 123 dollars and 00 cents \\\
Pemisah bagian “;”
Titik koma (;) adalah penentu format kondisional yang menerapkan pemformatan yang berbeda ke angka tergantung pada apakah nilainya positif, negatif, atau nol. Untuk menghasilkan perilaku ini, string format kustom dapat berisi hingga tiga bagian yang dipisahkan oleh titik koma. Bagian-bagian ini dijelaskan dalam tabel berikut.
Jumlah bagian | Deskripsi |
---|---|
Satu bagian | String format berlaku untuk semua nilai. |
Dua bagian | Bagian pertama berlaku untuk nilai positif dan nol, dan bagian kedua berlaku untuk nilai negatif. Jika angka yang akan diformat adalah negatif, tetapi menjadi nol setelah pembulatan sesuai dengan format di bagian kedua, nol yang dihasilkan diformat sesuai dengan bagian pertama. |
Tiga bagian | Bagian pertama berlaku untuk nilai positif, bagian kedua berlaku untuk nilai negatif, dan bagian ketiga berlaku untuk nol. Bagian kedua dapat dibiarkan kosong (tanpa apa-apa di antara titik koma), dalam hal ini bagian pertama berlaku untuk semua nilai bukan nol. Jika angka yang akan diformat bukan nol, tetapi menjadi nol setelah pembulatan sesuai dengan format di bagian pertama atau kedua, nol yang dihasilkan diformat sesuai dengan bagian ketiga. |
Pemisah bagian mengabaikan pemformatan yang sudah ada sebelumnya yang terkait dengan angka saat nilai akhir diformat. Misalnya, nilai negatif selalu ditampilkan tanpa tanda minus saat pemisah bagian digunakan. Jika Anda ingin nilai yang diformat akhir memiliki tanda minus, Anda harus secara eksplisit menyertakan tanda minus sebagai bagian dari penentu format kustom.
Contoh berikut menggunakan penentu format ";" untuk memformat angka positif, negatif, dan nol secara berbeda.
double posValue = 1234;
double negValue = -1234;
double zeroValue = 0;
String^ fmt2 = "##;(##)";
String^ fmt3 = "##;(##);**Zero**";
Console::WriteLine(posValue.ToString(fmt2));
Console::WriteLine(String::Format("{0:" + fmt2 + "}", posValue));
// Displays 1234
Console::WriteLine(negValue.ToString(fmt2));
Console::WriteLine(String::Format("{0:" + fmt2 + "}", negValue));
// Displays (1234)
Console::WriteLine(zeroValue.ToString(fmt3));
Console::WriteLine(String::Format("{0:" + fmt3 + "}", zeroValue));
// Displays **Zero**
double posValue = 1234;
double negValue = -1234;
double zeroValue = 0;
string fmt2 = "##;(##)";
string fmt3 = "##;(##);**Zero**";
Console.WriteLine(posValue.ToString(fmt2));
Console.WriteLine(String.Format("{0:" + fmt2 + "}", posValue));
// Displays 1234
Console.WriteLine(negValue.ToString(fmt2));
Console.WriteLine(String.Format("{0:" + fmt2 + "}", negValue));
// Displays (1234)
Console.WriteLine(zeroValue.ToString(fmt3));
Console.WriteLine(String.Format("{0:" + fmt3 + "}", zeroValue));
// Displays **Zero**
Dim posValue As Double = 1234
Dim negValue As Double = -1234
Dim zeroValue As Double = 0
Dim fmt2 As String = "##;(##)"
Dim fmt3 As String = "##;(##);**Zero**"
Console.WriteLine(posValue.ToString(fmt2))
Console.WriteLine(String.Format("{0:" + fmt2 + "}", posValue))
' Displays 1234
Console.WriteLine(negValue.ToString(fmt2))
Console.WriteLine(String.Format("{0:" + fmt2 + "}", negValue))
' Displays (1234)
Console.WriteLine(zeroValue.ToString(fmt3))
Console.WriteLine(String.Format("{0:" + fmt3 + "}", zeroValue))
' Displays **Zero**
Harfiah karakter
Penentu format yang muncul dalam string format numerik kustom selalu ditafsirkan sebagai karakter pemformatan dan tidak pernah sebagai karakter harfiah. Ini termasuk karakter berikut:
Semua karakter lain selalu ditafsirkan sebagai harfiah karakter dan, dalam operasi pemformatan, disertakan dalam string hasil tanpa diubah. Dalam operasi penguraian, mereka harus mencocokkan karakter dalam string input dengan tepat; perbandingannya peka huruf besar/kecil.
Contoh berikut menggambarkan satu penggunaan umum unit karakter harfiah (dalam hal ini, ribuan):
double n = 123.8;
Console.WriteLine($"{n:#,##0.0K}");
// The example displays the following output:
// 123.8K
Dim n As Double = 123.8
Console.WriteLine($"{n:#,##0.0K}")
' The example displays the following output:
' 123.8K
Ada dua cara untuk menunjukkan bahwa karakter harus ditafsirkan sebagai karakter harfiah dan bukan sebagai karakter pemformatan, sehingga mereka dapat dimasukkan dalam string hasil atau berhasil diurai dalam string input:
Dengan meng-escape karakter pemformatan. Untuk informasi selengkapnya, lihat Karakter escape "\".
Dengan melampirkan seluruh string harfiah dalam tanda kutip.
Contoh berikut menggunakan kedua pendekatan untuk menyertakan karakter yang dicadangkan dalam string format numerik kustom.
double n = 9.3;
Console.WriteLine($@"{n:##.0\%}");
Console.WriteLine($@"{n:\'##\'}");
Console.WriteLine($@"{n:\\##\\}");
Console.WriteLine();
Console.WriteLine($"{n:##.0'%'}");
Console.WriteLine($@"{n:'\'##'\'}");
// The example displays the following output:
// 9.3%
// '9'
// \9\
//
// 9.3%
// \9\
Dim n As Double = 9.3
Console.WriteLine($"{n:##.0\%}")
Console.WriteLine($"{n:\'##\'}")
Console.WriteLine($"{n:\\##\\}")
Console.WriteLine()
Console.WriteLine($"{n:##.0'%'}")
Console.WriteLine($"{n:'\'##'\'}")
' The example displays the following output:
' 9.3%
' '9'
' \9\
'
' 9.3%
' \9\
Catatan
Infinity Titik-Float dan NaN
Terlepas dari string format, jika nilai dari jenis titik-float Half, Single, atau Double adalah infinity positif, infinity negatif, atau bukan angka (NaN), string yang diformat adalah nilai dari properti PositiveInfinitySymbol, NegativeInfinitySymbolatau NaNSymbol masing-masing yang ditentukan oleh objek NumberFormatInfo yang saat ini berlaku.
Pengaturan Panel Kontrol
Pengaturan dalam item Opsi Regional dan Bahasa dalam Panel Kontrol memengaruhi string hasil yang dihasilkan oleh operasi pemformatan. Pengaturan tersebut digunakan untuk menginisialisasi objek NumberFormatInfo yang terkait dengan kultur saat ini, dan kultur saat ini menyediakan nilai yang digunakan untuk mengatur pemformatan. Komputer yang menggunakan pengaturan yang berbeda menghasilkan string hasil yang berbeda.
Selain itu, jika Anda menggunakan konstruktor CultureInfo(String) untuk membuat instans objek CultureInfo baru yang mewakili kultur yang sama dengan kultur sistem saat ini, penyesuaian apa pun yang ditetapkan oleh item Opsi Regional dan Bahasa di Panel Kontrol akan diterapkan ke objek CultureInfo baru. Anda dapat menggunakan konstruktor CultureInfo(String, Boolean) untuk membuat objek CultureInfo yang tidak mencerminkan kustomisasi sistem.
String format pembulatan dan titik tetap
Untuk string format titik tetap (yaitu, string format yang tidak berisi karakter format notasi ilmiah), angka dibulatkan ke tempat desimal sebanyak tempat penampung digit yang ada di sebelah kanan titik desimal. Jika string format tidak berisi titik desimal, angka dibulatkan ke bilangan bulat terdekat. Jika angka memiliki lebih banyak digit daripada tempat penampung digit yang ada di sebelah kiri titik desimal, digit ekstra disalin ke string hasil segera sebelum tempat penampung digit pertama.
Contoh
Contoh berikut menunjukkan dua string format numerik kustom. Dalam kedua kasus, tempat penampung digit (#
) menampilkan data numerik, dan semua karakter lainnya disalin ke string hasil.
double number1 = 1234567890;
String^ value1 = number1.ToString("(###) ###-####");
Console::WriteLine(value1);
int number2 = 42;
String^ value2 = number2.ToString("My Number = #");
Console::WriteLine(value2);
// The example displays the following output:
// (123) 456-7890
// My Number = 42
double number1 = 1234567890;
string value1 = number1.ToString("(###) ###-####");
Console.WriteLine(value1);
int number2 = 42;
string value2 = number2.ToString("My Number = #");
Console.WriteLine(value2);
// The example displays the following output:
// (123) 456-7890
// My Number = 42
Dim number1 As Double = 1234567890
Dim value1 As String = number1.ToString("(###) ###-####")
Console.WriteLine(value1)
Dim number2 As Integer = 42
Dim value2 As String = number2.ToString("My Number = #")
Console.WriteLine(value2)
' The example displays the following output:
' (123) 456-7890
' My Number = 42