Jenis numerik poin mengambang (referensi C#)
Jenis numerik poin mengambang mewakili angka riil. Semua jenis numerik poin mengambang adalah jenis nilai. Poin mengambang juga jenis sederhana dan dapat diinisialisasi dengan harfiah. Semua jenis numerik poin mengambang mendukung operator aritmatika, perbandingan, dan kesetaraan.
Karakteristik jenis poin mengambang
C# mendukung jenis poin mengambang yang telah ditentukan sebelumnya berikut:
Jenis/kata kunci C# | Rentang perkiraan | Presisi | Ukuran | Jenis .NET |
---|---|---|---|---|
float |
±1,5 x 10−45 hingga ±3,4 x 1038 | 6-9 digit | 4 byte | System.Single |
double |
±5.0 × 10−324 hingga ±1,7 × 10308 | ~15-17 digit | 8 byte | System.Double |
decimal |
±1,0 x 10-28 hingga ±7,9228 x 1028 | 28-29 digit | 16 byte | System.Decimal |
Dalam tabel sebelumnya, setiap kata kunci jenis C# dari kolom paling kiri adalah alias untuk jenis .NET yang sesuai. Mereka dapat dipertukarkan. Misalnya, deklarasi berikut mendeklarasikan variabel dengan jenis yang sama:
double a = 12.3;
System.Double b = 12.3;
Nilai default dari setiap jenis floating-point adalah nol, 0
. Masing-masing jenis poin mengambang memiliki konstanta MinValue
dan MaxValue
yang memberikan nilai terbatas minimum dan maksimum dari jenis tersebut. Jenis float
dan double
juga menyediakan konstanta yang mewakili nilai bukan angka dan tak terbatas. Misalnya, jenis double
menyediakan konstanta berikut: Double.NaN, Double.NegativeInfinity, dan Double.PositiveInfinity.
Jenis decimal
ini sesuai ketika tingkat presisi yang diperlukan ditentukan oleh jumlah digit di sebelah kanan titik desimal. Angka-angka tersebut biasanya digunakan dalam aplikasi keuangan, untuk jumlah mata uang (misalnya, $1,00), suku bunga (misalnya, 2,625%), dan sebagainya. Bahkan angka yang tepat hanya satu digit desimal ditangani lebih akurat oleh jenis decimal
: 0,1, misalnya, dapat diwakili dengan tepat oleh instans decimal
, sementara tidak ada instans double
atau float
yang persis mewakili 0,1. Karena perbedaan jenis numerik ini, kesalahan pembulatan tak terduga dapat terjadi dalam perhitungan aritmatika saat Anda menggunakan double
atau float
untuk data desimal. Anda dapat menggunakan double
alih-alih decimal
saat mengoptimalkan performa lebih penting daripada memastikan akurasi. Tetapi, perbedaan performa tidak akan diperhatikan oleh semua aplikasi kecuali aplikasi yang paling intensif perhitungan. Kemungkinan alasan lain yang perlu dihindari decimal
adalah meminimalkan persyaratan penyimpanan. Misalnya, ML.NET menggunakan float
karena perbedaan antara 4 byte dan 16 byte ditambahkan untuk himpunan data yang sangat besar. Untuk informasi selengkapnya, lihat System.Decimal .
Anda dapat mencampur jenis integral dan jenis float
dan double
dalam ekspresi. Dalam hal ini, jenis integral secara implisit dikonversi ke salah satu jenis floating-point dan, jika perlu, jenis float
secara implisit dikonversi ke double
. Ekspresi dievaluasi sebagai berikut:
- Jika ada jenis
double
dalam ekspresi, ekspresi mengevaluasi kedouble
, atau kebool
dalam perbandingan relasional dan kesetaraan. - Jika tidak ada jenis
double
dalam ekspresi, ekspresi mengevaluasi kefloat
, atau kebool
dalam perbandingan relasional dan kesetaraan.
Anda juga dapat mencampur jenis integral dan jenis decimal
dalam ekspresi. Dalam hal ini, jenis integral secara implisit dikonversi ke jenis decimal
dan ekspresi mengevaluasi ke decimal
, atau ke bool
dalam perbandingan relasional dan kesetaraan.
Anda tidak dapat mencampur jenis decimal
dengan jenis float
dan double
dalam ekspresi. Dalam hal ini, jika Anda ingin melakukan operasi aritmatika, perbandingan, atau kesetaraan, Anda harus secara eksplisit mengonversi operan baik dari atau ke jenis decimal
, seperti yang ditunjukkan contoh berikut:
double a = 1.0;
decimal b = 2.1m;
Console.WriteLine(a + (double)b);
Console.WriteLine((decimal)a + b);
Anda dapat menggunakan string format numerik standar atau string format numerik kustom untuk memformat nilai poin mengambang.
Harfiah yang nyata
Jenis harfiah nyata ditentukan oleh akhirannya sebagai berikut:
- Harfiah tanpa akhiran atau dengan akhiran
d
atauD
berjenisdouble
- Harfiah dengan akhiran
f
atauF
berjenisfloat
- Harfiah dengan akhiran
m
atauM
berjenisdecimal
Kode berikut menunjukkan contoh masing-masing:
double d = 3D;
d = 4d;
d = 3.934_001;
float f = 3_000.5F;
f = 5.4f;
decimal myMoney = 3_000.5m;
myMoney = 400.75M;
Contoh sebelumnya juga menunjukkan penggunaan _
sebagai pemisah digit. Anda dapat menggunakan pemisah digit dengan semua jenis harfiah numerik.
Anda juga dapat menggunakan notasi ilmiah, yaitu, menentukan bagian eksponen dari harfiah nyata, seperti yang ditunjukkan contoh berikut:
double d = 0.42e2;
Console.WriteLine(d); // output 42
float f = 134.45E-2f;
Console.WriteLine(f); // output: 1.3445
decimal m = 1.5E6m;
Console.WriteLine(m); // output: 1500000
Konversi
Hanya ada satu konversi implisit antara jenis numerik poin mengambang: dari float
ke double
. Tetapi Anda dapat mengonversi jenis poin mengambang apa pun ke jenis poin mengambang lainnya dengan transmisikan secara eksplisit. Untuk informasi selengkapnya, lihat Konversi numerik bawaan.
Spesifikasi bahasa C#
Untuk informasi selengkapnya, lihat bagian berikut dari spesifikasi bahasa C#:
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk