AFF Education Construa seu Futuro

Aula 33 - Métodos para Números (classe Math)

Métodos da classe Math

Uma classe pode ser entendida como um conjunto de métodos.

A classe Math do Java fornece diversos métodos matemáticos úteis para cálculos comuns. Esses métodos são estáticos, o que significa que podem ser usados diretamente sem criar uma instância da classe Math.

Método Descrição Exemplo
Math.abs(x) Valor absoluto Math.abs(-5) → 5
Math.pow(a, b) Potência Math.pow(2, 3) → 8.0
Math.sqrt(x) Raiz quadrada Math.sqrt(16) → 4.0
Math.max(a, b) Maior valor Math.max(10, 20) → 20
Math.min(a, b) Menor valor Math.min(10, 20) → 10
Math.round(x) Arredonda para o inteiro mais próximo Math.round(5.6) → 6
Math.floor(x) Arredonda para baixo Math.floor(4.9) → 4.0
Math.ceil(x) Arredonda para cima Math.ceil(4.1) → 5.0
Math.random() Número aleatório entre 0.0 e 1.0 Math.random()

Os métodos da classe Math têm tipos de retorno diferentes: Math.round() retorna um valor inteiro (int quando o parâmetro é float, ou long quando o parâmetro é double - sendo long também um tipo de número inteiro), enquanto Math.floor() e Math.ceil() sempre retornam valores do tipo double, mesmo quando o resultado numérico é um número inteiro como 4.0 ou 5.0. Essa diferença é importante ao atribuir os resultados a variáveis, pois pode ser necessário fazer conversão de tipos (cast) dependendo do método utilizado.

Exemplos práticos com a classe Math

public class ExemplosClasseMath {
    public static void main(String[] args) {
        // Valor absoluto - retorna o valor positivo de um número
        int numeroNegativo = -25;
        int valorAbsoluto = Math.abs(numeroNegativo);
        System.out.println("Math.abs(" + numeroNegativo + ") = " + valorAbsoluto);
        
        // Potência - eleva o primeiro número (base) ao segundo número (expoente)
        double base = 2.0;
        double expoente = 3.0;
        double potencia = Math.pow(base, expoente);
        System.out.println("Math.pow(" + base + ", " + expoente + ") = " + potencia);
        
        // Raiz quadrada - calcula a raiz quadrada de um número
        double numero = 16.0;
        double raizQuadrada = Math.sqrt(numero);
        System.out.println("Math.sqrt(" + numero + ") = " + raizQuadrada);
        
        // Máximo - retorna o maior entre dois valores
        int a = 30;
        int b = 45;
        int maximo = Math.max(a, b);
        System.out.println("Math.max(" + a + ", " + b + ") = " + maximo);
        
        // Mínimo - retorna o menor entre dois valores
        int minimo = Math.min(a, b);
        System.out.println("Math.min(" + a + ", " + b + ") = " + minimo);
        
        // Arredondamento para o inteiro mais próximo
        float numeroFloat = 5.6f;
        long arredondado = Math.round(numeroFloat);
        System.out.println("Math.round(" + numeroFloat + ") = " + arredondado);
        
        // Arredondamento para baixo (maior inteiro menor ou igual ao número)
        double numeroParaBaixo = 4.9;
        double arredondadoBaixo = Math.floor(numeroParaBaixo);
        System.out.println("Math.floor(" + numeroParaBaixo + ") = " + arredondadoBaixo);
        
        // Arredondamento para cima (menor inteiro maior ou igual ao número)
        double numeroParaCima = 4.1;
        double arredondadoCima = Math.ceil(numeroParaCima);
        System.out.println("Math.ceil(" + numeroParaCima + ") = " + arredondadoCima);
        
        // Número aleatório entre 0.0 (inclusive) e 1.0 (exclusive)
        double aleatorio = Math.random();
        System.out.println("Math.random() = " + aleatorio);
        
        // Gerando número aleatório em um intervalo específico (1 a 100)
        int aleatorioIntervalo = (int)(Math.random() * 100) + 1;
        System.out.println("Número aleatório entre 1 e 100: " + aleatorioIntervalo);
    }
}

Math.abs(-25) = 25

Math.pow(2.0, 3.0) = 8.0

Math.sqrt(16.0) = 4.0

Math.max(30, 45) = 45

Math.min(30, 45) = 30

Math.round(5.6) = 6

Math.floor(4.9) = 4.0

Math.ceil(4.1) = 5.0

Math.random() = 0.7239651193726082

Número aleatório entre 1 e 100: 73

Gerando números aleatórios em intervalos

O método Math.random() gera números aleatórios entre 0.0 (inclusive) e 1.0 (exclusive). Para gerar números aleatórios em diferentes intervalos, precisamos fazer algumas operações:

public class NumerosAleatorios {
    public static void main(String[] args) {
        // Gerando número aleatório entre 0.0 e 1.0
        double aleatorio01 = Math.random(); // valor aleatório: 0.3782518296207728
        System.out.println("Número aleatório entre 0.0 e 1.0: " + aleatorio01);
        
        // Gerando número inteiro aleatório entre 0 e 9
        double aleatorio02 = Math.random(); // valor aleatório: 0.0484432962077289
        double aleatorio02Vezes10 =  (aleatorio02 * 10);
        // valor aleatório*10: 0.484432962077289
        int aleatorio0a9 = (int)(aleatorio02Vezes10);
        // valor inteiro: 0
        System.out.println("Número aleatório entre 0 e 9: " + aleatorio0a9);

        // Gerando número inteiro aleatório entre 1 e 10
        double aleatorio03 = Math.random(); // valor aleatório: 0.7539432103127853
        double aleatorio03Vezes10 = (aleatorio03 * 10);
        // valor aleatório*10: 7.539432103127853
        int aleatorio1a10 = (int)(aleatorio03Vezes10 + 1);
        // valor inteiro: 8
        System.out.println("Número aleatório entre 1 e 10: " + aleatorio1a10);
            
        // Fórmula geral para gerar número aleatório entre min e max:
        // int aleatorio = (int)(Math.random() * (max - min + 1)) + min;
        
        // Exemplo: número aleatório entre 20 e 30
        int min = 20;
        int max = 30;
        int aleatorioMinMax = (int)(Math.random() * (max - min + 1)) + min;
        System.out.println("Número aleatório entre " + min + " e " + max + ": " + aleatorioMinMax);
    }
}

Número aleatório entre 0.0 e 1.0: 0.3782518296207728

Número aleatório entre 0 e 9: 0

Número aleatório entre 1 e 10: 8

Número aleatório entre 20 e 30: 25

Dica: Para gerar números aleatórios em um intervalo específico [min, max], use a fórmula:

int aleatorio = (int)(Math.random() * (max - min + 1)) + min;

Exercícios

Teste seus conhecimentos sobre a classe Math:

1. Qual método da classe Math é usado para calcular a potência de um número?

2. Qual será o resultado da expressão Math.floor(7.8)?

3. Para gerar um número aleatório entre 1 e 100, qual código você usaria?

4. Qual é a sequência correta das saídas?

System.out.println(Math.round(3.2));   // ?
System.out.println(Math.round(3.7));   // ?
System.out.println(Math.round(2.5));  // ?
  

5. Complete o código para obter o menor valor entre duas variáveis inteiras a e b:

int a = 12;
int b = 7;
int menor = ___________________;
System.out.println(menor);
  

Exercícios de Aplicação AFF Education

Reforce o conteúdo desta aula com mais dois exercícios práticos:

1. Qual o resultado de Math.max(7, 12)?

2. Qual o resultado de Math.pow(2, 3)?