Bagaimana saya bisa membandingkan jika BigDecimal
nilainya lebih besar dari nol?
java
compare
bigdecimal
Santhosh
sumber
sumber
BigDecimal
mengimplementasikanComparable
fungsi perbandingan sepertilt, le, eq, ne
sebaiknya dipindahkan ke aComparableUtils
. Jadi mereka dapat digunakan untuk kelas lain sepertiDate
atau tipe khusus.Jawaban:
Sesederhana:
The dokumentasi untuk
compareTo
benar-benar menentukan bahwa itu akan kembali -1, 0 atau 1, tetapi lebih umumComparable<T>.compareTo
metode hanya menjamin kurang dari nol, nol, atau lebih besar dari nol untuk yang tepat tiga kasus - jadi saya biasanya hanya menempel perbandingan itu.sumber
value
memiliki nilai nol tetapi skala non-nol (misalnya ia mengevaluasi0.00
bukan0
). Anda mungkin ingin mempertimbangkan bahwa itu sama dengan nol. ThecompareTo()
Metode memang akan melakukan hal ini. Tetapiequals()
metodenya tidak akan. (Bukti lain, jika ada yang diperlukan, bahwa Loki atau salah satu avatarnya masih hidup dan baik dan telah pindah ke pengembangan perangkat lunak.)LocalDate
includeisBefore
adalah indikasi bahwa Oracle merasakan hal yang sama. Ini tidak ideal, tetapi saya pikir ini sedikit lebih mudah dibaca dalam keadaan ini untuk menulisisGreaterThan
metode utilitas .compareTo
untuk mengembalikan 0. Tapi jika Anda khawatir, seharusnya mudah bagi Anda untuk menguji.Kemungkinan cara yang lebih baik :
sumber
String
diinisialisasiBigDecimal
untuk melihat apakah itu-
atau tidak? Itu tebakan terbaik saya tentang cara kerjanya. Tampaknya lebih cepat untuk benar-benar menentukan apakah angkanya0
. Apakah ini benar? Terima kasih banyak sebelumnya. Anton Bessonov!BigDecimal.compareTo()
metode dekompilasi , Anda akan menemukan bahwa itu memanggilsignum()
dua kali. Jadi sejauh kinerja berjalan,signum()
lebih baik.Gunakan
compareTo()
fungsi yang dibangun ke dalam kelas.sumber
lebih aman menggunakan metode ini
compareTo()
cetak konsol
compareTo()
kembalisekarang untuk masalah Anda, Anda dapat menggunakan
atau
Saya harap ini membantu Anda.
sumber
menggunakan ".intValue ()" pada objek BigDecimal tidak benar ketika Anda ingin memeriksa apakah parutannya dari nol. Satu-satunya pilihan yang tersisa adalah metode ".compareTo ()".
sumber
sumber