BigDecimal Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Angka desimal yang ditandatangani presisi arbitrer yang tidak dapat diubah.
[Android.Runtime.Register("java/math/BigDecimal", DoNotGenerateAcw=true)]
public class BigDecimal : Java.Lang.Number, IDisposable, Java.Interop.IJavaPeerable, Java.Lang.IComparable
[<Android.Runtime.Register("java/math/BigDecimal", DoNotGenerateAcw=true)>]
type BigDecimal = class
inherit Number
interface ISerializable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
interface IComparable
- Warisan
- Atribut
- Penerapan
Keterangan
Angka desimal yang ditandatangani presisi arbitrer yang tidak dapat diubah. BigDecimal Terdiri dari nilai bilangan bulat presisi arbitrer #unscaledValue() dan skala bilangan bulat 32-bit #scale(). Jika nol atau positif, skalanya adalah jumlah digit di sebelah kanan titik desimal. Jika negatif, nilai angka yang tidak diskalakan dikalikan dengan sepuluh ke daya negasi skala. Oleh karena itu(unscaledValue × 10<sup>-scale</sup>), nilai angka yang diwakili oleh BigDecimal adalah .
Kelas ini BigDecimal menyediakan operasi untuk aritmatika, manipulasi skala, pembulatan, perbandingan, hashing, dan konversi format. Metode ini #toString menyediakan representasi kanonis dari BigDecimal.
Kelas BigDecimal ini memberi penggunanya kontrol penuh atas perilaku pembulatan. Jika tidak ada mode pembulatan yang ditentukan dan hasil yang tepat tidak dapat diwakili, sebuah ArithmeticException dilemparkan; jika tidak, perhitungan dapat dilakukan ke mode presisi dan pembulatan yang dipilih dengan menyediakan objek yang sesuai MathContext ke operasi. Dalam kedua kasus, delapan <mode>< pembulatan em /em> disediakan untuk kontrol pembulatan. Menggunakan bidang bilangan bulat di kelas ini (seperti #ROUND_HALF_UP) untuk mewakili mode pembulatan tidak digunakan lagi; nilai RoundingModeenumenumerasi , (seperti RoundingMode#HALF_UP) harus digunakan sebagai gantinya.
MathContext Ketika objek disediakan dengan pengaturan presisi 0 (misalnya, MathContext#UNLIMITED), operasi aritmatika tepat, seperti metode aritmatika yang tidak MathContext mengambil objek. Sebagai koroller komputasi hasil yang tepat, pengaturan mode pembulatan MathContext objek dengan pengaturan presisi 0 tidak digunakan dan dengan demikian tidak relevan. Dalam kasus pembagian, kuota yang tepat dapat memiliki ekspansi desimal yang sangat panjang; misalnya, 1 dibagi 3. Jika kuota memiliki ekspansi desimal nonterminasi dan operasi ditentukan untuk mengembalikan hasil yang tepat, maka ArithmeticException akan dilemparkan. Jika tidak, hasil yang tepat dari pembagian dikembalikan, seperti yang dilakukan untuk operasi lain.
Ketika pengaturan presisi bukan 0, aturan BigDecimal aritmatika secara luas kompatibel dengan mode operasi aritmatika yang dipilih yang ditentukan dalam ANSI X3.274-1996 dan ANSI X3.274-1996/AM 1-2000 (bagian 7.4). Tidak seperti standar tersebut, BigDecimal termasuk banyak mode pembulatan. Setiap konflik antara standar ANSI ini dan BigDecimal spesifikasi diselesaikan demi BigDecimal.
Karena nilai numerik yang sama dapat memiliki representasi yang berbeda (dengan skala yang berbeda), aturan aritmatika dan pembulatan harus menentukan hasil numerik dan skala yang digunakan dalam representasi hasil.
Representasi yang berbeda dari nilai numerik yang sama disebut anggota kohor yang sama. Urutan BigDecimal alami #compareTo (BigDecimal) menganggap anggota kohor yang sama setara satu sama lain. Sebaliknya, #equals(Object) equals metode ini mengharuskan nilai numerik dan representasi sama agar kesetaraan dapat dipegang. Hasil metode seperti #scale() dan #unscaledValue() akan berbeda untuk nilai yang sama secara numerik dengan representasi yang berbeda.
Secara umum mode pembulatan dan pengaturan presisi menentukan bagaimana operasi mengembalikan hasil dengan jumlah digit terbatas ketika hasil yang tepat memiliki lebih banyak digit (mungkin hampir banyak dalam kasus pembagian dan akar kuadrat) daripada jumlah digit yang dikembalikan.
Pertama, jumlah total digit yang akan dikembalikan ditentukan oleh MathContextpengaturan 'sprecision; ini menentukan presisi hasil. Jumlah digit dimulai dari digit nonzero paling kiri dari hasil yang tepat. Mode pembulatan menentukan bagaimana digit berikutnya yang dibuang memengaruhi hasil yang dikembalikan.
Untuk semua operator aritmatika, operasi dilakukan seolah-olah hasil perantara yang tepat pertama kali dihitung dan kemudian dibulatkan ke jumlah digit yang ditentukan oleh pengaturan presisi (jika perlu), menggunakan mode pembulatan yang dipilih. Jika hasil yang tepat tidak dikembalikan, beberapa posisi digit dari hasil yang tepat akan dibuang. Saat pembulatan meningkatkan besarnya hasil yang dikembalikan, dimungkinkan bagi posisi digit baru untuk dibuat oleh carry yang menyebar ke digit "9" terkemuka. Misalnya, membulatkan nilai 999,9 hingga tiga digit yang dibulatkan ke atas akan secara numerik sama dengan seribu, diwakili sebagai 100&kali; 10<sup>1</sup>. Dalam kasus seperti itu, "1" baru adalah posisi digit terdepan dari hasil yang dikembalikan.
Untuk metode dan konstruktor dengan MathContext parameter, jika hasilnya tidak tepat tetapi mode pembulatan adalah RoundingMode#UNNECESSARY UNNECESSARY, akan ArithmeticException dilemparkan.
Selain hasil yang tepat logis, setiap operasi aritmatika memiliki skala yang disukai untuk mewakili hasil. Skala yang disukai untuk setiap operasi tercantum dalam tabel di bawah ini.
<table class="striped" style="text-align:left"><caption>Preferred Scales for Results of Arithmetic Operations </caption><thead><tr><th scope="col">Operation</th><scope="col">Preferred Skala< lingkup tr><result/th tbody><result/<>th><><="row">Add</th><td>max(addend.scale(), augend.scale())</td><tr><th scope="row">Subtract</th><td>max(minuend.scale(), subtrahend.scale()</td><tr><th scope="row">Multiply</th><td>multiplier.scale() + multiplicand.scale()</td><tr><th scope="row">Divide</th><td>dividend.scale() - divisor.scale()</td><tr><th scope="row">Square root</th><td>radicand.scale()/2</td<>/tbody></table>
Skala ini adalah yang digunakan oleh metode yang mengembalikan hasil aritmatika yang tepat; kecuali bahwa pembagian yang tepat mungkin harus menggunakan skala yang lebih besar karena hasil yang tepat mungkin memiliki lebih banyak digit. Misalnya, 1/32 adalah 0.03125.
Sebelum pembulatan, skala hasil perantara yang tepat logis adalah skala yang disukai untuk operasi tersebut. Jika hasil numerik yang tepat tidak dapat diwakili dalam precision digit, pembulatan memilih kumpulan digit yang akan dikembalikan dan skala hasil dikurangi dari skala hasil perantara ke skala paling sedikit yang dapat mewakili precision digit yang benar-benar dikembalikan. Jika hasil yang tepat dapat diwakili dengan paling banyak precision digit, representasi hasil dengan skala yang paling dekat dengan skala pilihan dikembalikan. Secara khusus, kuota yang tepat dapat diwakili dapat diwakili dalam kurang dari precision digit dengan menghapus nol berikutnya dan mengurangi skala. Misalnya, pembulatan ke tiga digit menggunakan mode pembulatan lantai RoundingMode#FLOOR, <br>
19/100 = 0.19 // integer=19, scale=2<br>
tapi<br>
21/110 = 0.190 // integer=190, scale=3<br>
Perhatikan bahwa untuk menambahkan, mengurangi, dan mengalikan, pengurangan skala akan sama dengan jumlah posisi digit dari hasil yang tepat yang dibuang. Jika pembulatan menyebabkan penyebaran carry untuk membuat posisi digit urutan tinggi baru, digit tambahan dari hasil dibuang daripada ketika tidak ada posisi digit baru yang dibuat.
Metode lain mungkin memiliki semantik pembulatan yang sedikit berbeda. Misalnya, hasil pow metode yang menggunakan algoritma yang ditentukan #pow(int, MathContext) terkadang dapat berbeda dari hasil matematika bulat dengan lebih dari satu unit di tempat terakhir, satu #ulp() ulp.
Dua jenis operasi disediakan untuk memanipulasi skala operasi penskalaan BigDecimal/pembulatan dan operasi gerakan titik desimal. Operasi penskalaan/pembulatan (#setScale setScale dan #round round) mengembalikan BigDecimal nilainya sekitar (atau tepatnya) sama dengan operand, tetapi yang skala atau presisinya adalah nilai yang ditentukan; yaitu, mereka meningkatkan atau mengurangi presisi angka yang disimpan dengan efek minimal pada nilainya. Operasi gerakan titik desimal (#movePointLeft movePointLeft dan #movePointRight movePointRight) mengembalikan yang BigDecimal dibuat dari operand dengan memindahkan titik desimal jarak yang ditentukan dalam arah yang ditentukan.
Sebagai bilangan bulat 32-bit, kumpulan nilai untuk skala besar, tetapi terikat. Jika skala hasil akan melebihi rentang bilangan bulat 32-bit, baik dengan luapan atau aliran bawah, operasi dapat melemparkan ArithmeticException.
Demi kejelasan dan kejelasan, pseudo-code digunakan di seluruh deskripsi BigDecimal metode. Ekspresi (i + j) pseudo-code adalah singkatan untuk "yang BigDecimal nilainya adalah yangi BigDecimalditambahkan ke yang dari BigDecimalj." Ekspresi (i == j) pseudo-code singkatan untuk "true jika dan hanya jikai BigDecimalmewakili nilai yang sama dengan BigDecimalj." Ekspresi kode semu lainnya ditafsirkan sama. Kurung siku digunakan untuk mewakili pasangan tertentu BigInteger dan skala yang menentukan BigDecimal nilai; misalnya [19, 2] adalah BigDecimal angka yang sama dengan 0,19 yang memiliki skala 2.
Semua metode dan konstruktor untuk kelas ini melempar NullPointerException ketika melewati null referensi objek untuk parameter input apa pun.
Ditambahkan dalam 1.1.
Dokumentasi Java untuk java.math.BigDecimal.
Bagian halaman ini adalah modifikasi berdasarkan pekerjaan yang dibuat dan dibagikan oleh Proyek Sumber Terbuka Android dan digunakan sesuai dengan istilah yang dijelaskan dalam Lisensi Atribusi Creative Commons 2.5.
Konstruktor
| BigDecimal(BigInteger) |
Menerjemahkan |
| BigDecimal(BigInteger, Int32) |
Menerjemahkan nilai yang |
| BigDecimal(BigInteger, Int32, MathContext) |
Menerjemahkan nilai yang |
| BigDecimal(BigInteger, MathContext) |
Menerjemahkan |
| BigDecimal(Char[]) |
Menerjemahkan representasi |
| BigDecimal(Char[], Int32, Int32) |
Menerjemahkan representasi |
| BigDecimal(Char[], Int32, Int32, MathContext) |
Menerjemahkan representasi |
| BigDecimal(Char[], MathContext) |
Menerjemahkan representasi |
| BigDecimal(Double) |
Menerjemahkan |
| BigDecimal(Double, MathContext) |
Menerjemahkan |
| BigDecimal(Int32) |
Menerjemahkan |
| BigDecimal(Int32, MathContext) |
Menerjemahkan |
| BigDecimal(Int64) |
Menerjemahkan |
| BigDecimal(Int64, MathContext) |
Menerjemahkan |
| BigDecimal(IntPtr, JniHandleOwnership) |
Konstruktor yang digunakan saat membuat representasi terkelola objek JNI; dipanggil oleh runtime. |
| BigDecimal(String) |
Menerjemahkan representasi string dari |
| BigDecimal(String, MathContext) |
Menerjemahkan representasi |
Bidang
| RoundCeiling |
Mode pembulatan untuk membulatkan ke arah tak terbatas positif. |
| RoundDown |
Mode pembulatan untuk membulatkan ke arah nol. |
| RoundFloor |
Mode pembulatan untuk membulatkan ke arah tak terbatas negatif. |
| RoundHalfDown |
Mode pembulatan untuk membulatkan ke arah "tetangga terdekat" kecuali kedua tetangga bersifat ekuisis, dalam hal ini membulatkan ke bawah. |
| RoundHalfEven |
Mode pembulatan untuk membulatkan ke arah "tetangga terdekat" kecuali kedua tetangga bersifat ekuisisan, dalam hal ini, bulat menuju tetangga genap. |
| RoundHalfUp |
Mode pembulatan untuk membulatkan ke arah "tetangga terdekat" kecuali kedua tetangga bersifat ekuisis, dalam hal ini dibulatkan ke atas. |
| RoundUnnecessary |
Mode pembulatan untuk menegaskan bahwa operasi yang diminta memiliki hasil yang tepat, sehingga tidak ada pembulatan yang diperlukan. |
| RoundUp |
Mode pembulatan untuk membulatkan jauh dari nol. |
Properti
| Class |
Mengembalikan kelas runtime dari . |
| Handle |
Handel ke instans Android yang mendasar. (Diperoleh dari Object) |
| JniIdentityHashCode |
Angka desimal yang ditandatangani presisi arbitrer yang tidak dapat diubah. (Diperoleh dari Object) |
| JniPeerMembers |
Angka desimal yang ditandatangani presisi arbitrer yang tidak dapat diubah. |
| One |
Nilai 1, dengan skala 0. |
| PeerReference |
Angka desimal yang ditandatangani presisi arbitrer yang tidak dapat diubah. (Diperoleh dari Object) |
| Ten |
Nilai 10, dengan skala 0. |
| ThresholdClass |
API ini mendukung infrastruktur Mono untuk Android dan tidak dimaksudkan untuk digunakan langsung dari kode Anda. |
| ThresholdType |
API ini mendukung infrastruktur Mono untuk Android dan tidak dimaksudkan untuk digunakan langsung dari kode Anda. |
| Zero |
Nilai 0, dengan skala 0. |
Metode
| Abs() |
Mengembalikan |
| Abs(MathContext) |
Mengembalikan |
| Add(BigDecimal) |
Mengembalikan |
| Add(BigDecimal, MathContext) |
Mengembalikan nilainya |
| ByteValue() |
Mengembalikan nilai angka yang ditentukan sebagai |
| ByteValueExact() |
Mengonversi ini |
| Clone() |
Membuat dan mengembalikan salinan objek ini. (Diperoleh dari Object) |
| CompareTo(BigDecimal) |
Membandingkan ini |
| Dispose() |
Angka desimal yang ditandatangani presisi arbitrer yang tidak dapat diubah. (Diperoleh dari Object) |
| Dispose(Boolean) |
Angka desimal yang ditandatangani presisi arbitrer yang tidak dapat diubah. (Diperoleh dari Object) |
| Divide(BigDecimal) |
|
| Divide(BigDecimal, Int32, RoundingMode) |
Mengembalikan |
| Divide(BigDecimal, Int32, RoundOptions) |
Mengembalikan |
| Divide(BigDecimal, MathContext) |
Mengembalikan nilainya |
| Divide(BigDecimal, RoundingMode) |
Mengembalikan |
| Divide(BigDecimal, RoundOptions) |
Mengembalikan |
| DivideAndRemainder(BigDecimal) |
Mengembalikan array dua elemen |
| DivideAndRemainder(BigDecimal, MathContext) |
Mengembalikan array dua elemen |
| DivideToIntegralValue(BigDecimal) |
Mengembalikan |
| DivideToIntegralValue(BigDecimal, MathContext) |
Mengembalikan |
| DoubleValue() |
Mengonversi ini |
| Equals(Object) |
Menunjukkan apakah beberapa objek lain "sama dengan" yang satu ini. (Diperoleh dari Object) |
| FloatValue() |
Mengonversi ini |
| GetHashCode() |
Mengembalikan nilai kode hash untuk objek . (Diperoleh dari Object) |
| IntValue() |
Mengonversi ini |
| IntValueExact() |
Mengonversi ini |
| JavaFinalize() |
Dipanggil oleh pengumpul sampah pada objek ketika pengumpulan sampah menentukan bahwa tidak ada lagi referensi ke objek. (Diperoleh dari Object) |
| LongValue() |
Mengonversi ini |
| LongValueExact() |
Mengonversi ini |
| Max(BigDecimal) |
Mengembalikan maksimum ini |
| Min(BigDecimal) |
Mengembalikan minimum dari ini |
| MovePointLeft(Int32) |
Mengembalikan yang |
| MovePointRight(Int32) |
Mengembalikan yang |
| Multiply(BigDecimal) |
Mengembalikan |
| Multiply(BigDecimal, MathContext) |
Mengembalikan nilainya |
| Negate() |
Mengembalikan |
| Negate(MathContext) |
Mengembalikan nilainya |
| Notify() |
Membangunkan satu utas yang menunggu monitor objek ini. (Diperoleh dari Object) |
| NotifyAll() |
Membangunkan semua utas yang menunggu monitor objek ini. (Diperoleh dari Object) |
| Plus() |
Mengembalikan |
| Plus(MathContext) |
Mengembalikan nilainya |
| Pow(Int32) |
Mengembalikan |
| Pow(Int32, MathContext) |
Mengembalikan nilainya |
| Precision() |
Mengembalikan presisi ini |
| Remainder(BigDecimal) |
Mengembalikan nilainya |
| Remainder(BigDecimal, MathContext) |
Mengembalikan nilainya |
| Round(MathContext) |
Mengembalikan bulat |
| Scale() |
Mengembalikan skala ini |
| ScaleByPowerOfTen(Int32) |
Mengembalikan BigDecimal yang nilai numeriknya sama dengan ( |
| SetHandle(IntPtr, JniHandleOwnership) |
Handle Mengatur properti. (Diperoleh dari Object) |
| SetScale(Int32) |
Mengembalikan yang |
| SetScale(Int32, RoundingMode) |
Mengembalikan yang |
| SetScale(Int32, RoundOptions) |
Mengembalikan yang |
| ShortValue() |
Mengembalikan nilai angka yang ditentukan sebagai |
| ShortValueExact() |
Mengonversi ini |
| Signum() |
Mengembalikan fungsi signum dari . |
| Sqrt(MathContext) |
Mengembalikan perkiraan ke akar kuadrat dengan pembulatan |
| StripTrailingZeros() |
Mengembalikan |
| Subtract(BigDecimal) |
Mengembalikan |
| Subtract(BigDecimal, MathContext) |
Mengembalikan nilainya |
| ToArray<T>() |
Angka desimal yang ditandatangani presisi arbitrer yang tidak dapat diubah. (Diperoleh dari Object) |
| ToBigInteger() |
Mengonversi ini |
| ToBigIntegerExact() |
Mengonversi ini |
| ToEngineeringString() |
Mengembalikan representasi string dari ini |
| ToPlainString() |
Mengembalikan representasi string dari ini |
| ToString() |
Mengembalikan representasi string objek. (Diperoleh dari Object) |
| Ulp() |
Mengembalikan ukuran ulp, unit di tempat terakhir, dari ini |
| UnregisterFromRuntime() |
Angka desimal yang ditandatangani presisi arbitrer yang tidak dapat diubah. (Diperoleh dari Object) |
| UnscaledValue() |
Mengembalikan |
| ValueOf(Double) |
Menerjemahkan |
| ValueOf(Int64) |
Menerjemahkan |
| ValueOf(Int64, Int32) |
Menerjemahkan nilai yang |
| Wait() |
Menyebabkan utas saat ini menunggu sampai terbangun, biasanya dengan <diberitahu></em> atau <em>terganggu</em>. (Diperoleh dari Object) |
| Wait(Int64) |
Menyebabkan utas saat ini menunggu sampai terbangun, biasanya dengan <>diberitahu</em> atau <em>terganggu</em>, atau sampai sejumlah real time telah berlalu. (Diperoleh dari Object) |
| Wait(Int64, Int32) |
Menyebabkan utas saat ini menunggu sampai terbangun, biasanya dengan <>diberitahu</em> atau <em>terganggu</em>, atau sampai sejumlah real time telah berlalu. (Diperoleh dari Object) |
Implementasi Antarmuka Eksplisit
| IComparable.CompareTo(Object) |
Angka desimal yang ditandatangani presisi arbitrer yang tidak dapat diubah. |
| IJavaPeerable.Disposed() |
Angka desimal yang ditandatangani presisi arbitrer yang tidak dapat diubah. (Diperoleh dari Object) |
| IJavaPeerable.DisposeUnlessReferenced() |
Angka desimal yang ditandatangani presisi arbitrer yang tidak dapat diubah. (Diperoleh dari Object) |
| IJavaPeerable.Finalized() |
Angka desimal yang ditandatangani presisi arbitrer yang tidak dapat diubah. (Diperoleh dari Object) |
| IJavaPeerable.JniManagedPeerState |
Angka desimal yang ditandatangani presisi arbitrer yang tidak dapat diubah. (Diperoleh dari Object) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Angka desimal yang ditandatangani presisi arbitrer yang tidak dapat diubah. (Diperoleh dari Object) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Angka desimal yang ditandatangani presisi arbitrer yang tidak dapat diubah. (Diperoleh dari Object) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Angka desimal yang ditandatangani presisi arbitrer yang tidak dapat diubah. (Diperoleh dari Object) |
Metode Ekstensi
| JavaCast<TResult>(IJavaObject) |
Melakukan konversi jenis yang diperiksa runtime Bahasa Umum Android. |
| JavaCast<TResult>(IJavaObject) |
Angka desimal yang ditandatangani presisi arbitrer yang tidak dapat diubah. |
| GetJniTypeName(IJavaPeerable) |
Angka desimal yang ditandatangani presisi arbitrer yang tidak dapat diubah. |