【发布时间】:2011-05-19 12:57:58
【问题描述】:
根据BigDecimal的JavaDoc,compareTo函数在比较时不考虑比例。
现在我有一个看起来像这样的测试用例:
BigDecimal result = callSomeService(foo);
assertTrue(result.compareTo(new BigDecimal(0.7)) == 0); //this does not work
assertTrue(result.equals(new BigDecimal(0.7).setScale(10, BigDecimal.ROUND_HALF_UP))); //this works
我期望函数返回的值是0.7,比例为 10。打印该值会显示预期的结果。但是compareTo() 函数似乎并没有按照我认为的方式工作。
这是怎么回事?
【问题讨论】:
-
您期望该值为 0.7,但您确定吗?您是否尝试过让 callSomeService 简单地返回 new BigDecimal(0.7)?
-
@CPerkins 是的,对此非常确定。我打印了结果,
equals方法也有效。反正问题解决了:) -
这也让我感到困惑,直到我明白我是从 DOUBLE 创建 BigDecimal... :-\
标签: java bigdecimal