Cursos / Jogos Digitais / Programação Estruturada / Aula

arrow_back Aula 06 - Operadores JavaScript: Aritmética

Videoaula 02 - Precisão Numérica

Transcrição

Diferente de várias linguagens de programação, como Java, C e Python, JavaScript não define diversos tipos de números como int, short, long, float e outros. Em JavaScript, temos apenas o tipo number. Esses números são sempre armazenados como números de ponto flutuante de precisão dupla de 64 bits, seguindo o padrão internacional IEEE 754.

Saiba Mais

Você pode conhecer um pouco mais sobre esse padrão acessando o link a seguir

https://ieeexplore.ieee.org/document/8766229

Isso quer dizer que praticamente todos os números que outras linguagens de programação oferecem são suportados por JavaScript. Porém, sempre haverá limitações de precisão. Em JavaScript, os números são precisos até 15 dígitos. Além disso, o número máximo de casas decimais é 17, mas a aritmética de ponto flutuante não é 100% precisa.

Em JavaScript podemos observar alguns casos em que a aritmética de ponto flutuante não é 100% precisa, veremos alguns exemplos, na verdade, três exemplos.

Nesse primeiro exemplo, temos duas variáveis (x e y) declaradas nas linhas 18 e 19, e iremos declarar a variável x com o valor que é igual a 15 dígitos 9, e na variável y teremos 16 dígitos 9, se eu imprimir esse valor na tela condizendo a x igual ao valor de x, vou quebrar a linha usando <br>, e y igual ao valor de y.

Código 1 - 06_3 Precisao.html

Se eu colocar isso na página HTML, veremos que o valor de x saiu correto na tela, com 15 dígitos 9, porém o valor de y subiu, ele não ficou exatamente igual ao que declaramos, isso por causa da imprecisão da aritmética de ponto flutuante (Figura 1).

Limites de Valores de Ponto Flutuante

Um outro exemplo que podemos ver é o que acontece se somarmos 0.2 com 0.1. Veremos esse resultado ao imprimir o valor dessa soma, o valor de z, que foi o valor que declaramos como a soma de 0.2 com 0.1. Veja no código essa representação:

Código 2 - 06_3 Precisao.html

E, ao invés de termos o valor de 0.3, como a gente esperava, o que acontece, na verdade, é que aparece um dígito 4, lá no final, antes você pode ver os 17 dígitos da precisão, as 17 casas decimais, e aí na última apareceu um 4, novamente por causa desse fato de que nós não temos 100% de precisão na aritmética de ponto flutuante (Figura 2).

Imprecisão em operações de ponto flutuante

Se quisermos esse resultado preciso como 0.3, como podemos ver na última linha da página HTML, devemos multiplicar 0.2 por 10, multiplicar 0.1 por 10, depois dividir ambos por 10, e aí sim o resultado ficará 0.3, ok?

Código 3 - 06_3 Precisao.html

Esses são só alguns exemplos pra deixar você alerta de que a aritmética de ponto flutuante não é 100% precisa; quando você for trabalhar nos limites dos valores da precisão, alguma imprecisão nesses limites pode acontecer, ok?

Versão 5.3 - Todos os Direitos reservados