BigDecimal
将包含任意值的 Java 简化为规范形式的最简单方法是什么,以便BigDecimal
表示相同数字的两个 ' 将使用该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:
}