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

Erro matemático na tabuada de número com vírgula

Consegui fazer o código da tabuada normalmente, testei com vários números.

Aí me empolguei e comecei a colocar números absurdos na variável, como 123456 e 88888888888888 por exemplo. Eis que coloco 3,68 e o código não roda.

Então percebi que o número não estava roxo depois da vírgula e substituí para 3.68 (com ponto). Rodou! Porém em alguns resultados a resposta aparece com muuuuitas casas decimais (nas multiplicações por 3, 5, 6, 9 e 10).

Vou dar um Ctrl+V dos resultados que a página mostra: [edit: não consegui deixar em linhas aqui no post]

3.68 vezes 0 é 0 3.68 vezes 1 é 3.68 3.68 vezes 2 é 7.36 3.68 vezes 3 é 11.040000000000001 3.68 vezes 4 é 14.72 3.68 vezes 5 é 18.400000000000002 3.68 vezes 6 é 22.080000000000002 3.68 vezes 7 é 25.76 3.68 vezes 8 é 29.44 3.68 vezes 9 é 33.120000000000005 3.68 vezes 10 é 36.800000000000004

e vou deixar aqui embaixo o código:

<meta charset="UTF-8">
<script>
    var num = 3.68;
    document.write("<h1>Tabuada do " + num + "</h1>")
    document.write(num + " vezes 0 é " + num * 0 + "<br>");
    document.write(num + " vezes 1 é " + num * 1 + "<br>");
    document.write(num + " vezes 2 é " + num * 2 + "<br>");
    document.write(num + " vezes 3 é " + num * 3 + "<br>");
    document.write(num + " vezes 4 é " + num * 4 + "<br>");
    document.write(num + " vezes 5 é " + num * 5 + "<br>");
    document.write(num + " vezes 6 é " + num * 6 + "<br>");
    document.write(num + " vezes 7 é " + num * 7 + "<br>");
    document.write(num + " vezes 8 é " + num * 8 + "<br>");
    document.write(num + " vezes 9 é " + num * 9 + "<br>");
    document.write(num + " vezes 10 é " + num * 10 + "<br>");
</script>

Como eu quebrei a matemática? O: hahaha

1 resposta
solução!

Assim como a representação decimal não consegue representar alguns números, com 1/3, gerando dizimas periódicas, a mesma coisa pode acontecer quando tentamos representar um número em binário, dessa forma o JS faz um arredondamento interno, nos casos que não aparecem todas essas casas decimais, o arredondamento foi feito pra baixo, eliminando as casas desnecessárias, já no caso que elas aparecem, o número mais próximo era acima, gerando essa incoerência.