Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

TDD duvida sobre comparação big decimal

Bom dia, estou fazendo o curso de tdd e fiquei com uma duvida sobre uma comparação.

No codigo:

public BigDecimal calcularBonus(Funcionario funcionario) {
        BigDecimal valor = funcionario.getSalario().multiply(new BigDecimal("0.1"));
        if (valor.compareTo(new BigDecimal("1000")) > 0) {
            valor = BigDecimal.ZERO;
        }
        return valor.setScale(2, RoundingMode.HALF_UP);
    }

no trecho: if (valor.compareTo(new BigDecimal("1000")) > 0) entendo que ele verifica se o valor é maior que 1000 certo? E o que significa o " > 0" seria "e maior que zero"?

Desculpe a duvida boba, se puderem me ajudar agradeço.

1 resposta
solução!

Oi Lars,

Na verdade esse é o comportamento do método compareTo do java: https://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html#compareTo(T)

Esse método deve devolver um número inteiro, de acordo com a seguinte regra:

  • retornar zero no caso dos valores serem equivalentes
  • retornar um número menor do que zero(geralmente é devolvido -1) caso o valor passado como parâmetro seja maior
  • retornar um número mario do que zero(geralmente é devolvido 1) caso o valor passado como parâmetro seja menor

Um exemplo para facilitar o entendimento:

BigDecimal cinco = new BigDecimal("5");
BigDecimal dez = new BigDecimal("10");

System.out.println(cinco.compareTo(cinco)); // compareTo vai retornar 0, pois os valores são iguais
System.out.println(cinco.compareTo(dez)); // compareTo vai retornar -1, pois o valor é menor do que o valor passado como parâmetro
System.out.println(dez.compareTo(cinco)); // compareTo vai retornar 1, pois o valor é maior do que o valor passado como parâmetro

Bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software