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.
Tabel berikut ini menjelaskan penentu format numerik kustom dan menampilkan output sampel yang dihasilkan oleh setiap penentu format. Buka 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. 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 atau karakter berikutnya ditafsirkan sebagai literal daripada sebagai penentu format kustom. Informasi selengkapnya: Karakter escape. |
987654 ("\###00\#") -> #987654# 987654 ("'#'##00'#'") -> #987654# 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.
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.
let
Source =
{
Number.ToText(123, "00000", ""),
// Displays 00123
Number.ToText(1.2, "0.00", ""),
// Displays 1.20
Number.ToText(1.2, "00.00", ""),
// Displays 01.20
Number.ToText(1.2, "00.00", "da-DK"),
// Displays 01,20
Number.ToText(.56, "0.0", ""),
// Displays 0.6
Number.ToText(1234567890, "0,0", ""),
// Displays 1,234,567,890
Number.ToText(1234567890, "0,0", "el-GR"),
// Displays 1.234.567.890
Number.ToText(1234567890.123456, "0,0.0", ""),
// Displays 1,234,567,890.1
Number.ToText(1234.567890, "0,0.00", "")
// Displays 1,234.57
}
in
Source
Catatan
Nilai teks kosong ("") dalam parameter terakhir Number.ToText dalam sampel sebelumnya mengacu pada budaya invarian.
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 menampilkan nol hanya jika digit signifikan dalam angka yang 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.
let
Source =
{
Number.ToText(1.2, "#.##", ""),
// Displays 1.2
Number.ToText(123, "#####"),
// Displays 123
Number.ToText(123456, "[##-##-##]"),
// Displays [12-34-56]
Number.ToText(1234567890, "#"),
// Displays 1234567890
Number.ToText(1234567890, "(###) ###-####")
// Displays (123) 456-7890
}
in
Source
Untuk mengembalikan string hasil di mana digit tidak ada atau nol di depan digantikan oleh spasi, gunakan Text.PadStart dan tentukan lebar bidang, seperti yang diilustrasikan contoh berikut.
let
Source = Text.Format("The value is: '#{0}'", {Text.PadStart(Number.ToText(.324, "#.###"), 5)})
in
Source
// 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; ditentukan oleh budaya yang mengontrol pemformatan.
Contoh berikut menggunakan penentu format "." untuk menentukan lokasi titik desimal dalam beberapa string hasil.
let
Source =
{
Number.ToText(1.2, "0.00", ""),
// Displays 1.20
Number.ToText(1.2, "00.00", ""),
// Displays 01.20
Number.ToText(1.2, "00.00", "da-DK"),
// Displays 01,20
Number.ToText(.086, "#0.##%", ""),
// Displays 8.6%
Number.ToText(Double.From(86000), "0.###E+0", "")
// Displays 8.6E+4
}
in
Source
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.
Budaya 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.
let
Source =
{
Number.ToText(1234567890, "#,#", ""),
// Displays 1,234,567,890
Number.ToText(1234567890, "#,##0,,", "")
// Displays, 1,235
}
in
Source
Contoh berikut menggambarkan penggunaan koma sebagai penentu untuk penskalaan angka.
let
Source =
{
Number.ToText(1234567890, "#,,", ""),
// Displays 1235
Number.ToText(1234567890, "#,,,", ""),
// Displays 1
Number.ToText(1234567890, "#,##0,,", "")
// Displays 1,235
}
in
Source
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 didefinisikan oleh budaya.
Contoh berikut mendefinisikan string format kustom yang menyertakan penentu kustom "%".
let
Source = Number.ToText(.086, "#0.##%", "")
// Displays 8.6%
in
Source
Penentu kustom "‰"
Karakter per mil (‰ atau \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 per mil yang digunakan didefinisikan oleh budaya, yang menyediakan informasi pemformatan khusus budaya.
Contoh berikut menentukan beberapa string format kustom yang menyertakan penentu kustom "‰".
let
Source = Number.ToText(.00354, "#0.##" & Character.FromNumber(0x2030), "")
// Displays 3.54‰
in
Source
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.
let
Source =
{
Number.ToText(86000, "0.###E+0", ""),
// Displays 8.6E+4
Number.ToText(86000, "0.###E+000", ""),
// Displays 8.6E+004
Number.ToText(86000, "0.###E-000", "")
// Displays 8.6E004
}
in
Source
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 kecil "E" serta simbol + dan - juga dapat ditafsirkan sebagai penentu format.
Untuk mencegah karakter ditafsirkan sebagai penentu format, Anda dapat:
- Mendahuluinya dengan garis miring terbalik.
- Kelilingi dengan satu kutipan.
- Kelilingi dengan dua tanda kutip ganda.
Masing-masing karakter ini bertindak sebagai 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 (\\
).
Untuk menyertakan kuotasi tunggal dalam string hasil, Anda harus melepaskannya dengan garis miring terbelakang (\'
). Jika kutipan tunggal lain yang tidak lolos '\'
mendahului tanda kutip tunggal yang lolos, garis miring terbalik ditampilkan sebagai gantinya (\
menampilkan ).
Untuk menyertakan tanda kutip ganda dalam string hasil, Anda harus menghindari dua di antaranya dengan garis miring terbelakang (\""
).
Contoh berikut menggunakan karakter escape untuk mencegah operasi pemformatan menginterpretasikan karakter "#", "0", dan "" sebagai karakter escape atau penentu format.
let
Source =
{
Number.ToText(123, "\#\#\# ##0 dollars and \0\0 cents \#\#\#"),
// Displays ### 123 dollars and 00 cents ###
Number.ToText(123, "'###' ##0 dollars and '00' cents '###'"),
// Displays ### 123 dollars and 00 cents ###
Number.ToText(123, """###"" ##0 dollars and ""00"" cents ""###"""),
// Displays ### 123 dollars and 00 cents ###
Number.ToText(123, "\\\\\\ ##0 dollars and \0\0 cents \\\\\\"),
// Displays \\\ 123 dollars and 00 cents \\\
Number.ToText(123, "'\\\' ##0 dollars and '00' cents '\\\'"),
// Displays \\\ 123 dollars and 00 cents \\\
Number.ToText(123, """\\\"" ##0 dollars and ""00"" cents ""\\\""")
// Displays \\\ 123 dollars and 00 cents \\\
}
in
Source
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.
let
Source =
{
Number.ToText(1234, "##;(##)"),
// Displays 1234
Number.ToText(-1234, "##;(##)"),
// Displays (1234)
Number.ToText(0, "##;(##);**Zero**")
// Displays **Zero**
}
in
Source
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):
let
Source = Number.ToText(123.8, "#,##0.0K")
// Displays 123.8K
in
Source
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, buka 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.
let
Source =
{
Number.ToText(9.3, "##.0\%"),
// Displays 9.3%
Number.ToText(9.3, "\'##\'"),
// Displays '9'
Number.ToText(9.3, "\\##\\"),
// Displays \9\
Number.ToText(9.3, "##.0'%'"),
// Displays 9.3%
Number.ToText(9.3, "'\'##'\'"),
// Displays \9\
Number.ToText(9.3, "##.0""%"""),
// Displays 9.3%
Number.ToText(9.3, "\""##\""")
// Displays "9"
}
in
Source
Catatan
Infinity Titik-Float dan NaN
Terlepas dari string format, jika nilai Decimal.Type
, Single.Type
atau jenis titik mengambang Double.Type
adalah infinitas positif, tak terbatas negatif, atau bukan angka (NaN), string yang diformat adalah nilai masing-masing Number.PositiveInfinity, Number.NegativeInfinity, atau konstanta Number.NaN yang ditentukan oleh budaya yang berlaku saat ini.
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 mungkin karena ada tempat penampung digit 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.
let
Source =
{
Number.ToText(1234567890, "(###) ###-####"),
// Displays (123) 456-7890
Number.ToText(42, "My Number = #")
// Displays My number = 42
}
in
Source