-
Notifications
You must be signed in to change notification settings - Fork 127
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # 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: