BigDecimal
任意の値を含むJava を正規の形式に縮小して、メソッドBigDecimal
を使用して同じ数を表す 2 つの値が等しくなるようにする最も簡単な方法は何equals()
ですか?
次のようなコードを使用して、任意の文字列から数値を解析しています。
BigDecimal x = new BigDecimal(string1, MathContext.DECIMAL64);
BigDecimal y = new BigDecimal(string2, MathContext.DECIMAL64);
( string1
, string2
) は任意であるため、たとえば ( "1"
, "1.0000"
) または ( "-32.5"
, "1981"
)...のようになります。
私が探しているのは、上記のアサーションが正規化するメソッドの最も単純な (最短/クリーンなコード) 実装です。
assert x.compareTo(y) != 0 ||
(canonicalize(x).equals(canonicalize(y)) &&
x.compareTo(canonicalize(x)) == 0 && y.compareTo(canonicalize(y)) == 0);
成功します...:
public static BigDecimal canonicalize(BigDecimal b) {
// TODO:
}