Verifique dois valores float / double para a igualdade exata

O que é uma maneira elegante, legível e não detalhada de comparar dois valores de ponto flutuante para igualdade exata?

Por mais simples que possa parecer, é um problema perverso. o== O operador não faz o trabalho para NaN e também tem tratamento especial para zero:

(+0.0 == -0.0) -> true
Double.NaN == Double.NaN -> false

Mas eu quero determinar se dois valores são exatamente os mesmos (mas eu façonão cuidado com diferentes padrões NaN, então qualquer NaN == qualquer outro NaN -> verdadeiro).

I posso faça isso com este pedaço de código do monstro feio:

Double.doubleToLongBits(a) == Double.doubleToLongBits(b)

Existe uma maneira melhor de escrever isso (e tornar a intenção óbvia)?

questionAnswers(2)

yourAnswerToTheQuestion