Bagikan melalui


about_Numeric_Literals

Deskripsi singkat

Artikel ini menguraikan sintaksis dan penggunaan nilai numerik di PowerShell.

Deskripsi panjang

Ada dua jenis literal numerik: bilangan bulat dan nyata. Keduanya dapat memiliki akhiran jenis dan pengali.

Literal bilangan bulat

Literal bilangan bulat dapat ditulis dalam notasi desimal atau heksadesimal. Literal heksadesimal diawali dengan 0x untuk membedakannya dari angka desimal.

Literal bilangan bulat dapat memiliki akhiran jenis dan akhiran pengali.

Akhiran Makna
l tipe data panjang
kb pengali kibibyte (10241)
mb pengali mebibyte (10242)
gb pengali gigibyte (10243)
tb pengali teribyte (10244)
pb pengali petibyte (10245)

Jenis literal bilangan bulat ditentukan oleh nilainya, akhiran jenis, dan akhiran pengali numerik.

Untuk bilangan bulat literal tanpa akhiran jenis:

  • Jika nilai dapat diwakili oleh jenis [int], itu adalah jenisnya.
  • Jika tidak, jika nilai dapat diwakili oleh jenis [long], itu adalah jenisnya.
  • Jika tidak, jika nilai dapat diwakili oleh jenis [decimal], itu adalah jenisnya.
  • Jika tidak, itu diwakili oleh jenis [double].

Untuk bilangan bulat literal dengan akhiran jenis:

  • Jika akhiran jenis adalah u dan nilai dapat diwakili oleh jenis [int] maka jenisnya adalah [int].
  • Jika akhiran jenis adalah u dan nilai dapat diwakili oleh jenis [long] maka jenisnya adalah [long].
  • Jika nilainya dapat diwakili oleh jenis yang ditentukan maka itu adalah jenisnya.
  • Jika tidak, harfiah itu salah bentuk.

Literal nyata

Literal nyata hanya dapat ditulis dalam notasi desimal. Notasi ini dapat mencakup nilai pecahan setelah titik desimal dan notasi ilmiah menggunakan bagian eksponensial.

Bagian eksponensial mencakup 'e' diikuti dengan tanda opsional (+/-) dan angka yang mewakili eksponen. Misalnya, nilai 1e2 harfiah sama dengan nilai numerik 100.

Literal nyata dapat memiliki akhiran jenis dan akhiran pengali.

Akhiran Makna
d tipe data desimal
kb pengali kibibyte (10241)
mb pengali mebibyte (10242)
gb pengali gigibyte (10243)
tb pengali teribyte (10244)
pb pengali petibyte (10245)

Ada dua jenis harfiah nyata: ganda dan desimal. Ini ditunjukkan oleh ketidakhadiran atau kehadiran, masing-masing, dari akhiran jenis desimal. PowerShell tidak mendukung representasi harfiah dari sebuah [float] nilai. Literal nyata ganda memiliki jenis [double]. Literal nyata desimal memiliki jenis [decimal]. Nol berikutnya di bagian pecahan dari literal nyata desimal sangat signifikan.

Jika nilai digit bagian eksponen dalam [double] literal nyata kurang dari minimum yang [double] didukung, nilai harfiah nyata tersebut adalah 0. Jika nilai digit bagian eksponen dalam [decimal] literal nyata kurang dari minimum yang didukung, literal tersebut salah bentuk. Jika nilai digit bagian eksponen dalam [double] literal atau [decimal] nyata lebih besar dari maksimum yang didukung, literal tersebut salah bentuk.

Catatan

Sintaks memungkinkan literal nyata ganda untuk memiliki akhiran jenis panjang. PowerShell memperlakukan kasus ini sebagai bilangan bulat literal yang nilainya diwakili oleh jenis [long]. Fitur ini telah dipertahankan untuk kompatibilitas mundur dengan versi PowerShell yang lebih lama. Namun, programmer tidak dianjurkan untuk menggunakan literal bilangan bulat dari bentuk ini karena mereka dapat dengan mudah mengaburkan nilai aktual literal. Misalnya, 1.2L memiliki nilai 1, 1.2345e1L memiliki nilai 12, dan 1.2345e-5L memiliki nilai 0, tidak satu pun yang langsung jelas.

Pengali numerik

Untuk kenyamanan, bilangan bulat dan literal nyata dapat berisi pengali numerik, yang menunjukkan salah satu set kekuatan yang umum digunakan 2. Pengali numerik dapat ditulis dalam kombinasi huruf besar atau kecil apa pun.

Akhiran pengali dapat digunakan dalam kombinasi dengan uakhiran jenis , , uldan l .

Contoh pengali

PS> 1kb
1024

PS> 1.30Dmb
1363148.80

PS> 0x10Gb
17179869184

PS> 1.4e23tb
1.5393162788864E+35

PS> 0x12Lpb
20266198323167232

Akselerator jenis numerik

PowerShell mendukung jenis akselerator berikut:

Accelerator Catatan Deskripsi
[byte] Byte (tidak ditandatangani)
[sbyte] Byte (ditandatangani)
[int16] bilangan bulat 16-bit
[uint16] Bilangan bulat 16-bit (tidak ditandatangani)
[int32] bilangan bulat 32-bit
[int] alias untuk [int32] bilangan bulat 32-bit
[uint32] Bilangan bulat 32-bit (tidak ditandatangani)
[int64] bilangan bulat 64-bit
[long] alias untuk [int64] bilangan bulat 64-bit
[uint64] Bilangan bulat 64-bit (tidak ditandatangani)
[bigint] Lihat BigInteger Struct
[single] Titik mengambang presisi tunggal
[float] alias untuk [single] Titik mengambang presisi tunggal
[double] Titik mengambang presisi ganda
[decimal] Titik mengambang 128-bit

Bekerja dengan jenis numerik lainnya

Untuk bekerja dengan jenis numerik lainnya, Anda harus menggunakan akselerator jenis, yang bukan tanpa beberapa masalah. Misalnya, nilai bilangan bulat tinggi selalu diurai sebagai dua kali lipat sebelum ditransmisikan ke jenis lain.

PS> [bigint]111111111111111111111111111111111111111111111111111111
111111111111111100905595216014112456735339620444667904

Nilai diurai sebagai ganda terlebih dahulu, kehilangan presisi dalam rentang yang lebih tinggi. Untuk menghindari masalah ini, masukkan nilai sebagai string lalu konversikan:

PS> [bigint]'111111111111111111111111111111111111111111111111111111'
111111111111111111111111111111111111111111111111111111

Examples

Tabel berikut berisi beberapa contoh literal numerik dan mencantumkan jenis dan nilainya:

Number Tipe Nilai
100 Int32 100
100D Decimal 100
100l Int64 100
1e2 Laju 100
1.e2 Laju 100
0x1e2 Int32 482
0x1e2L Int64 482
0x1e2D Int32 7725
482D Decimal 482
482gb Int64 517543559168
0x1e2lgb Int64 517543559168

Konversi jenis numerik

Ketika string dikonversi ke angka, indikator format heksadesimal tambahan didukung. Format tambahan tersebut tidak dikenali sebagai harfiah.

[int] '0xF' -eq 0xF
[int] '&hF' -eq 0xF
[int] '#F' -eq 0xF

Perintah yang terlihat seperti literal numerik

Perintah apa pun yang terlihat seperti harfiah numerik harus dijalankan menggunakan operator panggilan (&), jika tidak, perintah tersebut ditafsirkan sebagai sejumlah jenis terkait.

Mengakses properti dan metode objek numerik

Untuk mengakses anggota harfiah numerik, ada kasus ketika Anda perlu mengapit literal dalam tanda kurung.

  • Harfiah tidak memiliki titik desimal
  • Literal tidak memiliki digit apa pun setelah titik desimal
  • Literal tidak memiliki akhiran

Misalnya, contoh berikut gagal:

PS> 2.GetType().Name
At line:1 char:11
+ 2.GetType().Name
+           ~
An expression was expected after '('.
+ CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : ExpectedExpression

Contoh berikut berfungsi:

PS> 2L.GetType().Name
Int64
PS> 1.234.GetType().Name
Double
PS> (2).GetType().Name
Int32

Dua contoh pertama berfungsi tanpa menyertakan nilai harfiah dalam tanda kurung karena pengurai PowerShell dapat menentukan di mana harfiah numerik berakhir dan metode GetType dimulai.