У 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 126

3 ответа:

ответ JavaDoc из equals() метод:

в отличие от compareTo этот метод рассматривает два BigDecimal объекты равны только в том случае, если они равны по значению и масштабу (таким образом, 2.0 не равен 2.00 при сравнении этим методом).

другими словами: equals() проверяет, является ли BigDecimal объекты ровно то же самое в аспект. compareTo() "только" сравнивает их числовые значение.

Я вижу, что BigDecimal имеет метод inflate () на методе equals (). Что на самом деле делает inflate ()?

по сути, inflate() звонки BigInteger.valueOf(intCompact) при необходимости, т. е. он создает значение без масштаба, которое хранится как BigInteger С long intCompact. Если вам это не нужно BigInteger и значение без масштаба вписывается в longBigDecimal кажется, чтобы попытаться сэкономить место как можно дольше.

вы также можете сравнить с двойным значением

BigDecimal a= new BigDecimal("1.1"); BigDecimal b =new BigDecimal("1.1");
System.out.println(a.doubleValue()==b.doubleValue());