JavaRush /Blogue Java /Random-PT /Classe Java Math e seus métodos

Classe Java Math e seus métodos

Publicado no grupo Random-PT
Neste artigo, daremos uma breve visão geral da classe Math em Java. Vamos falar sobre os métodos desta classe e como utilizá-los. A classe Math reside no pacote java.lang e fornece um conjunto de métodos estáticos para realizar vários cálculos matemáticos diferentes. A seguir estão exemplos de cálculos para os quais a classe Math pode ser útil:
  • Cálculo de valores absolutos (valores de módulo)
  • Cálculo de valores de funções trigonométricas (senos, cossenos, etc.)
  • Elevação em vários graus
  • Extraindo raízes de vários graus
  • Geração de números aleatórios
  • Arredondamento
  • Etc.
A seguir, tentaremos ver como a classe Java Math ajuda a resolver os problemas listados acima. Classe Java Math e seus métodos - 1Vamos começar analisando a classe com métodos que permitem calcular um módulo de valor. O método abs é responsável por isso. Este método está sobrecarregado e a classe Math tem as seguintes diferenças:
  • abdômen duplo estático (duplo a)
  • abs flutuante estático (flutuador a)
  • estático int abs(int a)
  • abdômen longo estático (longo a)
Exemplo de uso:
public static void main(String[] args) {
        System.out.println(Math.abs(-1));      // 1
        System.out.println(Math.abs(-21.8d));  // 21.8
        System.out.println(Math.abs(4532L));   // 4532
        System.out.println(Math.abs(5.341f));  // 5.341
    }

Cálculo de funções trigonométricas

A classe Math permite calcular várias funções trigonométricas - senos, cossenos, tangentes, etc. Uma lista completa de métodos pode ser encontrada no site oficial da documentação . Abaixo está uma lista desses métodos:
  • pecado duplo estático (duplo a)
  • cos duplo estático (duplo a)
  • bronzeado duplo estático (duplo a)
  • estático duplo asin (duplo a)
  • acos duplo estático (duplo a)
  • atan duplo estático (duplo a)
Métodos de cálculo: seno, cosseno, tangente, arco seno, arco cosseno, arco tangente. Cada método calcula um valor para o ângulo `a`. Este parâmetro é passado para cada método e em cada caso é medido em radianos (e não em graus, como estamos acostumados). Há duas notícias aqui, boas e ruins. Vamos começar com o bom. A classe Math possui métodos para converter radianos em graus e graus em radianos:
  • estático duplo toDegrees (duplo angrad)
  • duplo estático para Radianos (angdeg duplo)
Aqui, o método toDegrees converterá o ângulo angrad, medido em radianos, em graus. O método toRadians, por outro lado, converte o ângulo angdeg, medido em graus, em radianos. A má notícia é que isso acontece com algum erro. Aqui está um exemplo de cálculo de senos e cossenos:
public static void main(String[] args) {
        System.out.println(Math.sin(Math.toRadians(0)));
        System.out.println(Math.sin(Math.toRadians(30)));
        System.out.println(Math.sin(Math.toRadians(90)));

        System.out.println(Math.cos(Math.toRadians(0)));
        System.out.println(Math.cos(Math.toRadians(30)));
        System.out.println(Math.cos(Math.toRadians(90)));
    }
O programa produzirá:

0.0
0.49999999999999994
1.0

1.0
0.8660254037844387
6.123233995736766E-17
O que não corresponde exatamente às tabelas de senos e cossenos, em parte devido a erros na conversão de graus para radianos.

Exponenciação

Para elevar um número a uma potência, a classe Math fornece um método pow, que possui a seguinte assinatura:
static double pow(double a, double b)
Este método eleva o parâmetro `a` à potência `b`. Exemplos:
public static void main(String[] args) {
        System.out.println(Math.pow(1,2)); // 1.0
        System.out.println(Math.pow(2,2)); // 4.0
        System.out.println(Math.pow(3,2)); // 9.0
        System.out.println(Math.pow(4,2)); // 16.0
        System.out.println(Math.pow(5,2)); // 25.0

        System.out.println(Math.pow(1,3)); // 1.0
        System.out.println(Math.pow(2,3)); // 8.0
        System.out.println(Math.pow(3,3)); // 27.0
        System.out.println(Math.pow(4,3)); // 64.0
        System.out.println(Math.pow(5,3)); // 125.0
    }

Extração de raiz

A classe Math fornece métodos para obter raízes quadradas e cúbicas. Os seguintes métodos são responsáveis ​​por este procedimento:
  • sqrt duplo estático (duplo a)
  • cbrt duplo estático (duplo a)
O método sqrt obtém a raiz quadrada e o método cbrt obtém a raiz cúbica. Exemplos:
public static void main(String[] args) {
        System.out.println(Math.sqrt(4));   // 2.0
        System.out.println(Math.sqrt(9));   // 3.0
        System.out.println(Math.sqrt(16));  // 4.0

        System.out.println(Math.cbrt(8));   // 2.0
        System.out.println(Math.cbrt(27));  // 3.0
        System.out.println(Math.cbrt(125)); // 5.0
    }

Geração de números aleatórios

Para gerar números aleatórios, a classe Math fornece o método aleatório. Este método gera um número real positivo aleatório (duplo) no intervalo de 0,0 a 1,0. A assinatura do método fica assim:
public static double random()
Vejamos exemplos:
public static void main(String[] args) {
    for (int i = 0; i < 5; i++) {
        System.out.println(Math.random());
    }
}
Após executar o método principal, o seguinte foi exibido no console:

0.37057465028778513
0.2516253742011597
0.9315649439611121
0.6346725713527239
0.7442959932755443
Com um pouco de manipulação, você pode usar o método aleatório da classe Math para obter números aleatórios inteiros situados em um determinado intervalo. Aqui está um exemplo de uma função que recebe dois argumentos min e max e retorna um número inteiro aleatório que está no intervalo de min (inclusive) a max (inclusive):
static int randomInARange(int min, int max) {
    return  (int) (Math.random() * ((max - min) + 1)) + min;
}
Vamos escrever um método Main no qual testaremos o método randomInARange:
public class MathExample {


    public static void main(String[] args) {
        // Карта, в которой мы будем хранить количество выпадений Howого-то числа
        Map<Integer, Integer> map = new TreeMap<>();

        // За 10000 операций
        for (int i = 0; i < 10000; i++) {

            // Сгенерируем рандомное число от -10 включительно до 10 включительно
            final Integer randomNumber = randomInARange(-10, 10);


            if (!map.containsKey(randomNumber)) {
                // Если карта еще не содержит "выпавшего случайного числа"
                // Положим его в карту с кол-вом выпадений = 1
                map.put(randomNumber, 1);
            } else {
                // Иначе, увеличим количество выпадений данного числа на 1
                map.put(randomNumber, map.get(randomNumber) + 1);
            }
        }

        // Выведем на экран содержимое карты в формате ключ=[meaning]
        for (Map.Entry<Integer, Integer> entry : map.entrySet()){
            System.out.println(String.format("%d=[%d]", entry.getKey(), entry.getValue()));
        }
    }

    static int randomInARange(int min, int max) {
        return  (int) (Math.random() * ((max - min) + 1)) + min;
    }
}
Depois de executar o método principal, a saída pode ficar assim:

-10=[482]
-9=[495]
-8=[472]
-7=[514]
-6=[457]
-5=[465]
-4=[486]
-3=[500]
-2=[490]
-1=[466]
0=[458]
1=[488]
2=[461]
3=[470]
4=[464]
5=[463]
6=[484]
7=[479]
8=[459]
9=[503]
10=[444]

Process finished with exit code 0

Arredondamento

Para arredondar números em Java, uma das ferramentas são os métodos da classe Math. Mais precisamente, os métodos redondo, teto e piso:
  • rodada longa estática (duplo a)
  • rodada int estática (float a)
  • piso duplo estático (duplo a)
  • teto duplo estático (duplo a)
O método redondo - arredonda como de costume para a pessoa média. Se a parte fracionária do número for maior ou igual a 0,5, o número será arredondado para cima, caso contrário, arredondado para baixo. O método floor sempre, independentemente dos valores da parte fracionária, arredonda o número para baixo (em direção ao infinito negativo). O método ceil, ao contrário, independente dos valores da parte fracionária, arredonda os números para cima (em direção ao infinito positivo). Vejamos exemplos:
public static void main(String[] args) {
    System.out.println(Math.round(1.3)); // 1
    System.out.println(Math.round(1.4)); // 1
    System.out.println(Math.round(1.5)); // 2
    System.out.println(Math.round(1.6)); // 2

    System.out.println(Math.floor(1.3)); // 1.0
    System.out.println(Math.floor(1.4)); // 1.0
    System.out.println(Math.floor(1.5)); // 1.0
    System.out.println(Math.floor(1.6)); // 1.0

    System.out.println(Math.ceil(1.3)); // 2.0
    System.out.println(Math.ceil(1.4)); // 2.0
    System.out.println(Math.ceil(1.5)); // 2.0
    System.out.println(Math.ceil(1.6)); // 2.0
}

Conclusão

Neste artigo, demos uma olhada superficial na aula de Matemática. Vimos como usar esta classe você pode:
  • Calcular valores módulo;
  • Calcular valores de funções trigonométricas;
  • Elevar números a potências;
  • Extraia raízes quadradas e cúbicas;
  • Gere números aleatórios;
  • Números redondos.
Existem muitos outros métodos interessantes nesta classe. Que pode ser encontrado no site de documentação oficial . Bem, para o primeiro contato, os métodos listados acima são suficientes.
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION