Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Nota
Artikel ini menyediakan keterangan tambahan untuk dokumentasi referensi untuk API ini.
Decimal Jenis nilai mewakili angka desimal mulai dari positif 79.228.162.514.264.337.593.543.950 335 menjadi negatif 79.228.162.514.264.337.593.543.950.335. Nilai default dari adalah Decimal 0. Jenis nilai Decimal sesuai untuk perhitungan keuangan yang memerlukan sejumlah besar digit integral dan pecahan yang signifikan, kemudian tidak terjadi kesalahan pembulatan. Meskipun menggunakan jenis Decimal, kebutuhan untuk pembulatan tetap ada. Sebaliknya, ini meminimalkan kesalahan karena pembulatan. Misalnya, kode berikut menghasilkan hasil 0,99999999999999999999999999999, bukan 1.
decimal dividend = Decimal.One;
decimal divisor = 3;
// The following displays 0.9999999999999999999999999999 to the console
Console.WriteLine(dividend/divisor * divisor);
let dividend = Decimal.One
let divisor = 3m
// The following displays 0.9999999999999999999999999999 to the console
printfn $"{dividend/divisor * divisor}"
Dim dividend As Decimal = Decimal.One
Dim divisor As Decimal = 3
' The following displays 0.9999999999999999999999999999 to the console
Console.WriteLine(dividend/divisor * divisor)
Ketika hasil pembagian dan perkalian diteruskan ke Round metode , hasilnya tidak kehilangan presisi, seperti yang ditunjukkan oleh kode berikut.
decimal dividend = Decimal.One;
decimal divisor = 3;
// The following displays 1.00 to the console
Console.WriteLine(Math.Round(dividend/divisor * divisor, 2));
let dividend = Decimal.One
let divisor = 3m
// The following displays 1.00 to the console
printfn $"{Math.Round(dividend/divisor * divisor, 2)}"
Dim dividend As Decimal = Decimal.One
Dim divisor As Decimal = 3
' The following displays 1.00 to the console
Console.WriteLine(Math.Round(dividend/divisor * divisor, 2))
Angka desimal adalah nilai floating-point yang terdiri dari tanda, nilai numerik di mana setiap digit dalam nilai berkisar dari 0 hingga 9, dan faktor penskalaan yang menunjukkan posisi titik desimal mengambang yang memisahkan bagian integral dan pecahan dari nilai numerik.
Representasi biner dari nilai Decimal adalah 128-bit yang terdiri dari angka bilangan bulat 96-bit, dan sekumpulan bendera 32-bit yang mewakili hal-hal seperti faktor tanda dan penskalaan yang digunakan untuk menentukan bagian mana darinya adalah pecahan desimal. Oleh karena itu, representasi biner dari Decimal nilai formulir, (-296 hingga 296) / 10(0 hingga 28)), di mana -(296-1) sama dengan MinValue, dan 296-1 sama dengan MaxValue. Untuk informasi selengkapnya tentang representasi nilai biner dan sebuah contoh, lihat konstruktor Decimal dan metode Decimal(Int32[]).
Faktor penskalakan juga mempertahankan nol berikutnya dalam angka Decimal . Nol berikutnya tidak memengaruhi nilai Decimal angka dalam operasi aritmatika atau perbandingan. Namun, nol akhir mungkin diungkapkan oleh metode ToString jika string format yang sesuai diterapkan.
Pertimbangan konversi
Jenis ini menyediakan metode yang mengonversi nilai Decimal ke dan dari nilai SByte, Int16, Int32, Int64, Byte, UInt16, UInt32, dan UInt64. Konversi dari jenis integral ini menjadi Decimal adalah konversi yang memperluas yang tidak pernah kehilangan informasi atau menyebabkan pengecualian.
Konversi dari Decimal ke salah satu jenis integral mempersempit konversi yang membulatkan Decimal nilai ke nilai bilangan bulat terdekat menuju nol. Beberapa bahasa, seperti C#, juga mendukung konversi Decimal nilai ke Char nilai. Jika hasil konversi ini tidak dapat diwakili dalam jenis tujuan, OverflowException pengecualian akan dilemparkan.
Jenis Decimal ini juga menyediakan metode untuk mengonversi nilai Decimal menjadi nilai Single dan Double. Konversi dari Decimal ke Single atau Double mempersempit konversi yang mungkin kehilangan presisi tetapi bukan informasi tentang besarnya nilai yang dikonversi. Konversi tidak menghasilkan pengecualian.
Konversi dari Single atau Double untuk Decimal memberikan OverflowException pengecualian jika hasil konversi tidak dapat direpresentasikan sebagai Decimal.
Melakukan operasi pada nilai Desimal
Jenis ini Decimal mendukung operasi matematika standar seperti penambahan, pengurangan, pembagian, perkalian, dan negasi unary. Anda juga dapat bekerja langsung dengan representasi biner dari nilai Decimal dengan memanggil GetBits metode .
Untuk membandingkan dua Decimal nilai, Anda dapat menggunakan operator perbandingan numerik standar, atau Anda dapat memanggil CompareTo metode atau Equals .
Anda juga dapat memanggil anggota Math kelas untuk melakukan berbagai operasi numerik, termasuk mendapatkan nilai absolut angka, menentukan nilai maksimum atau minimum dari dua Decimal nilai, mendapatkan tanda angka, dan membulatkan angka.
Contoh
Contoh kode berikut menunjukkan penggunaan Decimal.
/// <summary>
/// Keeping my fortune in Decimals to avoid the round-off errors.
/// </summary>
class PiggyBank {
protected decimal MyFortune;
public void AddPenny() {
MyFortune = Decimal.Add(MyFortune, .01m);
}
public decimal Capacity {
get {
return Decimal.MaxValue;
}
}
public decimal Dollars {
get {
return Decimal.Floor(MyFortune);
}
}
public decimal Cents {
get {
return Decimal.Subtract(MyFortune, Decimal.Floor(MyFortune));
}
}
public override string ToString() {
return MyFortune.ToString("C")+" in piggy bank";
}
}
/// Keeping my fortune in Decimals to avoid the round-off errors.
type PiggyBank() =
let mutable myFortune = 0m
member _.AddPenny() =
myFortune <- Decimal.Add(myFortune, 0.01m)
member _.Capacity =
Decimal.MaxValue
member _.Dollars =
Decimal.Floor myFortune
member _.Cents =
Decimal.Subtract(myFortune, Decimal.Floor myFortune)
override _.ToString() =
$"{myFortune:C} in piggy bank"
' Keeping my fortune in Decimals to avoid the round-off errors.
Class PiggyBank
Protected MyFortune As Decimal
Public Sub AddPenny()
MyFortune = [Decimal].Add(MyFortune, 0.01D)
End Sub
Public ReadOnly Property Capacity() As Decimal
Get
Return [Decimal].MaxValue
End Get
End Property
Public ReadOnly Property Dollars() As Decimal
Get
Return [Decimal].Floor(MyFortune)
End Get
End Property
Public ReadOnly Property Cents() As Decimal
Get
Return [Decimal].Subtract(MyFortune, [Decimal].Floor(MyFortune))
End Get
End Property
Public Overrides Function ToString() As String
Return MyFortune.ToString("C") + " in piggy bank"
End Function
End Class