У bigdecimal метод Equals() и compareto используется()
рассмотрим простой тестовый класс:
import java.math.BigDecimal;
/**
* @author The Elite Gentleman
*
*/
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
BigDecimal x = new BigDecimal("1");
BigDecimal y = new BigDecimal("1.00");
System.out.println(x.equals(y));
System.out.println(x.compareTo(y) == 0 ? "true": "false");
}
}
вы можете (сознательно) говорить, что x
равна y
(не Ссылка на объект), но при запуске программы, следующий результат показывает:
false
true
вопрос: в чем разница между compareTo()
и equals()
на BigDecimal
это compareTo
можно определить, что x
равна y
?
PS: Я вижу, что BigDecimal имеет inflate()
метод on equals()
метод. Что значит inflate()
do вообще-то?
3 ответа:
ответ JavaDoc из
equals()
метод:в отличие от
compareTo
этот метод рассматривает дваBigDecimal
объекты равны только в том случае, если они равны по значению и масштабу (таким образом, 2.0 не равен 2.00 при сравнении этим методом).другими словами:
equals()
проверяет, является лиBigDecimal
объекты ровно то же самое в аспект.compareTo()
"только" сравнивает их числовые значение.
Я вижу, что BigDecimal имеет метод inflate () на методе equals (). Что на самом деле делает inflate ()?
по сути,
inflate()
звонкиBigInteger.valueOf(intCompact)
при необходимости, т. е. он создает значение без масштаба, которое хранится какBigInteger
Сlong intCompact
. Если вам это не нужноBigInteger
и значение без масштаба вписывается вlong
BigDecimal
кажется, чтобы попытаться сэкономить место как можно дольше.