A Classe Math Parte 1

Tempo de leitura: 3 min

Escrito por Michel Adriano Medeiros
em 12/04/2020

Classe Math

A classe Math contém métodos para executar operações numéricas básicas, como as funções exponencial elementar, logaritmo, raiz quadrada e trigonométrica.

Ao contrário de alguns dos métodos numéricos da classe StrictMath, todas as implementações das funções equivalentes da classe Math não são definidas para retornar os mesmos resultados bit a bit.

Esse relaxamento permite implementações com melhor desempenho, onde a reprodutibilidade estrita não é necessária.

Por padrão, muitos dos métodos Math simplesmente chamam o método equivalente no StrictMath para sua implementação.

Os geradores de código são incentivados a usar bibliotecas nativas específicas da plataforma ou instruções de microprocessador.

Quando disponíveis, para fornecer implementações de alto desempenho dos métodos Math. Tais implementações de desempenho superior ainda devem estar em conformidade com a especificação para Math.

A qualidade das especificações de implementação refere-se a duas propriedades: precisão do resultado retornado e monotonicidade do método. A precisão dos métodos matemáticos de ponto flutuante é medida em termos de ulps, unidades em último lugar.

https://www.youtube.com/watch?v=5TRINZtl8dY

Matemática em Java: Mastigando Números na JVM

Para um determinado formato de ponto flutuante, uma ulp de um valor específico de número real é a distância entre os dois valores de ponto flutuante entre colchetes nesse valor numérico.

Discutir a precisão de um método como um todo, e não em um argumento específico, o número de ulps citadas é o pior erro de qualquer argumento.

Se um método sempre tiver um erro menor que 0,5 ulps, o método sempre retornará o número de ponto flutuante mais próximo do resultado exato; esse método é arredondado corretamente.

Números Arrendondados às Vezes é Melhor do que Números Flutuantes

Um método arredondado corretamente é geralmente o melhor que uma aproximação de ponto flutuante pode ser; no entanto, é impraticável que muitos métodos de ponto flutuante sejam arredondados corretamente.

Em vez disso, para a classe Math, um limite maior de erro de 1 ou 2 ulps é permitido para certos métodos.

Informalmente, com um erro de 1 ulp associado, quando o resultado exato é um número representável, o resultado exato deve ser retornado como o resultado calculado.

Caso contrário, qualquer um dos dois valores de ponto flutuante que suportam o resultado exato pode ser retornado.

Para resultados exatos grandes em magnitude, um dos pontos finais do suporte pode ser infinito. Além da precisão nos argumentos individuais, também é importante manter relações adequadas entre o método em diferentes argumentos.

Portanto, é necessário que a maioria dos métodos com mais de 0,5 erros de ulp seja semi-monotônica: sempre que a função matemática não diminui.

O mesmo ocorre com a aproximação de ponto flutuante; da mesma forma, sempre que a função matemática não aumenta, o mesmo ocorre com a flutuação. aproximação de ponto.

Nem todas as aproximações com precisão de 1 ulp atendem automaticamente aos requisitos de monotonicidade. A plataforma usa aritmética de número inteiro do complemento assinado dois com tipos primitivo int e long.

O desenvolvedor deve escolher o tipo primitivo para garantir que as operações aritméticas produzam consistentemente resultados corretos.

O que em alguns casos significa que as operações não excederão o intervalo de valores da computação. A melhor prática é escolher o tipo e o algoritmo primitivos para evitar o estouro. Nos casos em que o tamanho é int ou longo e os erros de estouro precisam ser detectados.

Os métodos addExact, subtractExact, multiplyExact, toIntExact, incrementExact, decrementExact e negateExact lançam uma ArithmeticException quando os resultados excedem.

Cuidados com os Valores Máximos e Mínimos

A divisão aritmética das operações e o valor absoluto, o estouro ocorre apenas com um valor mínimo ou máximo específico e deve ser verificado em relação ao mínimo ou máximo, conforme apropriado.

Essa classe existe desde a versão 1 do Java.

https://www.youtube.com/watch?v=WSETHOvuPlY

Fonte: https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/lang/Math.html

Você vai gostar também:

Para enviar seu comentário, preencha os campos abaixo:

Deixe um comentário


*


*


Seja o primeiro a comentar!

Damos valor à sua privacidade

Nós e os nossos parceiros armazenamos ou acedemos a informações dos dispositivos, tais como cookies, e processamos dados pessoais, tais como identificadores exclusivos e informações padrão enviadas pelos dispositivos, para as finalidades descritas abaixo. Poderá clicar para consentir o processamento por nossa parte e pela parte dos nossos parceiros para tais finalidades. Em alternativa, poderá clicar para recusar o consentimento, ou aceder a informações mais pormenorizadas e alterar as suas preferências antes de dar consentimento. As suas preferências serão aplicadas apenas a este website.

Cookies estritamente necessários

Estes cookies são necessários para que o website funcione e não podem ser desligados nos nossos sistemas. Normalmente, eles só são configurados em resposta a ações levadas a cabo por si e que correspondem a uma solicitação de serviços, tais como definir as suas preferências de privacidade, iniciar sessão ou preencher formulários. Pode configurar o seu navegador para bloquear ou alertá-lo(a) sobre esses cookies, mas algumas partes do website não funcionarão. Estes cookies não armazenam qualquer informação pessoal identificável.

Cookies de desempenho

Estes cookies permitem-nos contar visitas e fontes de tráfego, para que possamos medir e melhorar o desempenho do nosso website. Eles ajudam-nos a saber quais são as páginas mais e menos populares e a ver como os visitantes se movimentam pelo website. Todas as informações recolhidas por estes cookies são agregadas e, por conseguinte, anónimas. Se não permitir estes cookies, não saberemos quando visitou o nosso site.

Cookies de funcionalidade

Estes cookies permitem que o site forneça uma funcionalidade e personalização melhoradas. Podem ser estabelecidos por nós ou por fornecedores externos cujos serviços adicionámos às nossas páginas. Se não permitir estes cookies algumas destas funcionalidades, ou mesmo todas, podem não atuar corretamente.

Cookies de publicidade

Estes cookies podem ser estabelecidos através do nosso site pelos nossos parceiros de publicidade. Podem ser usados por essas empresas para construir um perfil sobre os seus interesses e mostrar-lhe anúncios relevantes em outros websites. Eles não armazenam diretamente informações pessoais, mas são baseados na identificação exclusiva do seu navegador e dispositivo de internet. Se não permitir estes cookies, terá menos publicidade direcionada.

Visite as nossas páginas de Políticas de privacidade e Termos e condições.

Importante: Este site faz uso de cookies que podem conter informações de rastreamento sobre os visitantes.
Criado por WP RGPD Pro