0.1 float é maior que 0.1 double. Eu esperava que fosse falso [duplicado]
Esta questão já tem uma resposta aqui:
Se o operador <funciona corretamente para tipos de ponto flutuante, por que não podemos usá-lo para testes de igualdade? 5 respostasDeixei:
double d = 0.1;
float f = 0.1;
deveria a expressão
(f > d)
Retornatrue
oufalse
?
Empiricamente, a resposta étrue
. No entanto, eu esperava que fossefalse
.
Como0.1
não pode ser perfeitamente representado em binário, enquanto o dobro tem15
para16
dígitos decimais de precisão, e float tem apenas7
. Então, ambos são menos que0.1
, enquanto o duplo está mais perto de0.1
.
Eu preciso de uma explicação exata para otrue
.