BigDecimal

ここにBigDecimalのことを書いて以来、結構BigDecimal関係でたどり着く人が多いみたいです。BigDecimalって結構使われてるのね。
compareToの使用方法を調べているのと、四捨五入のことを調べているのが多いっぽいです。

前にも書いた気がするけど、BigDecimalのcompareToはequalsとは違い、実際の値そのものを比較します。equalsでは値が同じでもスケールが異なる場合はfalseを返してしまう場合も、compareToでは0(二つの値が等しい)を返します。

あと、compareToの戻り値が分かりづらいってのもあるかも知れないんで、分かりやすい覚え方を一つ。
BigDecimalの変数 a, b がある場合に a.compareTo(b) の結果は a<b ならば a.compareTo(b)<0 であり、a<=b ならば a.compareTo(b)<=b 、同様に a>b ならば a.compareTo(b)>0 であり、 a>=b ならば a.compareTo(b)>=0 となる。これは 0 と比較して比較演算子を使用すれば、同じ向き・種類の比較演算子を使えばいいだけって話になります。

もひとつおまけ。
BigDecimal のスケールっていうのは小数点以下の桁数のことになります。0なら小数点以下は持たない(=整数)だし、10なら小数点以下10桁まで持つってことです。