我正在考虑使用BigDecimal比较两个舍入为2位数的货币值。例如,我期望下面的结果为0,因为我将0.02到0.02的东西进行比较。但它产量-1!有没有正确的方法来做到这一点?Java中的BigDecimal
这应该也适用于更大的数字,如123.45 vs 123.4534 ...当使用“compareTo”时应该产生0。
我试过使用数学上下文,但它看起来并不高雅......有没有正确的方法?
BigDecimal spread = new BigDecimal(0.01934);
spread.setScale(2, RoundingMode.HALF_EVEN);
System.out.format("0.0193 ? 0.02 = %d\n", spread.compareTo(new BigDecimal(0.02)));
并将溶液:
BigDecimal spread = new BigDecimal(0.01934).setScale(2, RoundingMode.HALF_EVEN);
BigDecimal loSpread = new BigDecimal(0.02).setScale(2, RoundingMode.HALF_EVEN);
System.out.format("0.0193 ? 0.02 = %d\n", spread.compareTo(loSpread));
这是另一种获得精确浮点数的方法。 1+。 –
必须在这里使用这两个想法才能做对。将张贴正确的代码。 – fodon