У 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и значение без масштаба вписывается вlongBigDecimalкажется, чтобы попытаться сэкономить место как можно дольше.