Olá! De acordo com o exemplo citado na videoaula:
1 == (100.0 / 100) pode não ser verdadeiro caso a divisão tenha uma precisão não exata.
se houver uma alternativa com uma comparação como nesse exemplo, é melhor considerá-la certa ou errada?
Olá! De acordo com o exemplo citado na videoaula:
1 == (100.0 / 100) pode não ser verdadeiro caso a divisão tenha uma precisão não exata.
se houver uma alternativa com uma comparação como nesse exemplo, é melhor considerá-la certa ou errada?
Fala, Philippo!
Nesse caso que você apresentou, o resultado será true. Entretanto, se você alterar a precisão do numerador, de 100.0 para 100.1, por exemplo, o resultado será false.
Indo para a sua pergunta: se houver algo nesse sentido, será de fácil compreensão (como esse 100.0/100 ou 100.1/100). São questões onde não é necessário fazer cálculo para se perceber que o resultado não será exato e diferente de um número inteiro (como o 1, nesse seu exemplo).
Abraço.
Entendi! A minha dúvida estava relacionada em como o exame enxerga uma alternativa como essa. Se para o exame de certificação, é dado como certo ou errado, por causa da precisão não exata que foi comentado na videoaula.
Mas, se fizer esse cálculo do exemplo, a resposta seria 1(int) == 1.0(double), não?
O que acontece "por debaixo dos panos" é que o int será convertido para double (e não há perda de valores, pois não há casas de precisão no int), daí a operação será double/double. Dessa forma 1/1.0 será convertido para 1.0/1.0 antes de ocorrer a divisão.
Se você compreender inglês (nada que um google translator não ajude também), pode dar uma olhada nesses links:
https://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.20.1
https://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html#jls-5.6.2
Qualquer coisa, estamos por aqui... Abraço.
A lógica da comparação eu entendi (e o resultado final também, que será double/double).
O que me deixou confuso foi nesse trecho que eu tirei da parte teórica da aula, que diz: "pode não ser verdadeiro caso a divisão tenha uma precisão não exata".
Se o resultado final será double/double (1.0 ==1.0), por que pode não ser verdadeira a comparação, de acordo com esse exemplo dado na parte teórica?
Minha dúvida é na parte textual mesmo. Eu não sei se o que ele escreveu/disse pode ter sido passado de forma "errônea", querendo abranger outros tipos de comparação e acabou englobando esse exemplo ou se realmente tem alguma relação com esse exemplo que foi dado na aula.
Essa prova é toda macetada, então, eu estou muito preocupado com as pegadinhas haha Outro instrutor tirou uma outra dúvida minha, quando perguntei se a prova troca os verbos para enganar quem a está fazendo (o que eu acho ridículo, pois o exame quer saber se o candidato cai ou não nas pegadinhas, ao invés de conhecer ou não o conteúdo de Java).
Aí eu não se essa frase que o instrutor disse nessa aula, de que "pode não ser verdadeiro" tem relação direta com esse exemplo ou se ele quis dizer para outros casos de comparação (como o que você mencionou, de 100.0 para 100.1, por exemplo, que teria um resultado false).
Eu sei que, no exemplo, o resultado será true, mas por que o instrutor disse que "pode não ser verdadeiro", em vez de dizer que "será verdadeiro" ou algo do gênero?