BigDecimal в Java

Я думаю об использовании BigDecimal для сравнения двух значений валюты, округленных до 2 цифр. Например, я ожидаю, что следующее даст 0, потому что я сравниваю что-то, что должно быть округлено до 0,02, с чем-то, что равно 0,02. Но это дает -1 !! Есть ли правильный способ сделать это?

Это также должно работать для больших чисел, таких как 123,45 против 123,4534... что должно давать 0 при использовании «compareTo».

Я пытался использовать математический контекст, но это не кажется элегантным... есть ли правильный способ?

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));
7
задан Paul Vargas 24 June 2012 в 04:08
поделиться