2015-12-18 3 views
-1

У меня есть следующая проблема. В JavaApplication у меня есть 2 Значения BigDecimal, и я должен проверить, если он больше, чем другой. Так что я пытаюсь сделать что-то вроде этого:Почему я не могу сравнить эти две переменные BigDecimal? Могу ли я правильно утверждать, если один больше другого?

if(progetto.getImpTotSpe() > progetto.getImpFin()) { 
    ... 
} 

Где progetto.getImpTotSpe() и progetto.getImpFin() вернуть мою 2 BigDecimal.

Но в этом случае не может работать и дать мне эту ошибку синтаксиса:

The operator > is undefined for the argument type(s) java.math.BigDecimal, java.math.BigDecimal

Почему? Что мне не хватает? Как я могу правильно сравнить свои значения 2 BigDecimal?

ответ

6

Оператор > применим только для примитивных числовых типов, как int, byte, char и т.д. (или типов могут быть автоматически может распакованный к числовым примитивов, как Integer, Double, Character и т.д.).

Как BigDecimal не такой тип, вы должны использовать Comparable<T>#compareTo(T other) метод, которым BigDecimal класс реализует:

if (progetto.getImpTotSpe().compareTo(progetto.getImpFin()) > 0) { ... } 
+0

мммм почему вы hecking если progetto.getImpTotSpe() CompareTo (progetto.getImpFin (.) больше thatn 0? Что именно сделал метод compareTo()? Это вычитание? – AndreaNobili

+2

Нет. Если у вас есть 'first.compareTo (second)', это означает, что вернет '0', если значения будут численно равными, возвращает '1', когда' first' больше, чем 'second', и' -1' в противном случае. Проверьте javadoc ['BigDecimal.compareTo()') (http://docs.oracle.com/ JavaSE/7/Docs/API/Java/математика/BigDecimal.html # сравнить To (java.math.BigDecimal)). –