-
Notifications
You must be signed in to change notification settings - Fork 127
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Criticismo contra JavaScript] Explicação matemática sobre inteiro 1 mais constante ser igual a constante mais inteiro 1, sem alterar valor da constante, estar matematicamente correto #7
Comments
Do link usado como referência para dizer que JavaScript é do mal: https://dutrahacking.blogspot.com.br/2016/11/why-javascript-is-evil.html |
PS: minhas críticas ao JS nunca foram matemáticas hahahahaha |
@alexsmonte Não é sobre você esse issue. Olha o resto da discussão que você vai entender. |
Eu sei q nao mas meu comentário deu origem haha hahahahaha comentário fora de contexto neh hahahahhaha |
QUE TRETAAA!!! No caso do Math.PI ele ateh aceita ++ pq não foi criada como const, porém NAO MODIFICA seu valor nunca, mas uma const criada não aceita ++, apenas + 1 Adoro as loucuras do JS, só ver o JS WAT. Isso só é ruim quando o programador não sabe dessas coisas e aí faz merda. Até C tem seus problemas e não vai ser uma linguagem feita em menos de 10 dias que será né amiguinhos. |
O ++ Math.PI não é um problema. Como o @suissa falou é uma operação inplace sem modificar o valor. O que achei grave foi a conta Só não entendi o porque desse erro na precedência. Alguém sabe porque isso acontece? |
A reposta do meu questionamento, foi respondida em https://stackoverflow.com/questions/588004/is-floating-point-math-broken . Várias linguagens têm o mesmo problema, testei em JS, Python, PHP e Ruby: $ node -p '0.1 + 0.2 == 0.3'
false
$ python -c 'print 0.1 + 0.2 == 0.3'
False
$ ruby -e 'print 0.1 + 0.2 == 0.3'
false
$ php -r 'var_dump(0.1 + 0.2 == 0.3);'
bool(false) |
Sobre a issue do: (0.2 + 0.1) != 0.3 Computadores não entendem o conceito de dízimas periódicas ou não-periódicas. Como os computadores tem 64 bits, isso significa que eles conseguem guardar 64 dígitos binários Ao dividir 2/10 o computador vai chegar em um número tipo 01110011100111.... atingindo os 64 bits disponíveis, ou seja, isso é um erro de floating number Logo, pro computador, algo que tende ao infinito nunca vai ser igual a outra coisa que tende ao infinito porque ele nao consegue determinar essa equivalência Exemplo final: Mas se fossemos expressar a mesma operação em decimal, ficaria: .•. 1/3 + 1/3 + 1/3 = 0.999 0.999 é muito próximo de 1, mas não equivale, de fato, a 1 Acontece a mesma coisa com o computador, porém, ao dividir por 10 |
Esta discussão se iniciou em no grupo NodeJS onde uma pessoa começou a dizer com argumentos rasos que o design da linguagem JavaScript era ruim por motivos que não são matematicamente errados. Link: https://www.facebook.com/groups/nodejsbrasil/permalink/916210161845605/
Proponho aqui que seja adicionado ao curso maiores explicações sobre lógica matemática relacionada a soma de inteiros e constantes exibir um resultado com a soma da constante aos respectivos inteiros não é um erro de lógica.
Caso haja exercícios de aula, levar em consideração que é opcional a linguagem de programação exibir com incrementador ou decrementador o resultado da operação. O único erro de lógica seria se a constante verdadeira pudesse ser alterada.
The text was updated successfully, but these errors were encountered: