the Documentation pour Java .lang.double.nan code>
dit que c'est
Une constante tenant une valeur non-A-numéro (NAN) de type
double code>. Il est équivalent à la valeur renvoyée par
double.LongBittstOdouble (0x7FF800000000000000L) code>. p> BlockQuote>
Cela semble impliquer qu'il y en a d'autres. Si oui, comment puis-je les saisir et cela peut-il être fait de manière portante? P>
Pour être clair, je souhaite trouver les valeurs
double code>
x code> tel que p>
xxx pré> et p>
xxx pré> est à la fois vrai. p> p>
3 Réponses :
IEEE 754 Définit une NAN comme numéro avec tous les bits d'exposant qui sont Donc pour un numéro de précision que vous recherchez: < / p> java gère cela comme: p> à somme, vous pouvez utiliser n'importe quel Nan que vous voulez, qui est conforme aux règles susmentionné (tous les bits 1 en exposant et mantissa! = 0). P> p> 1 code> et un numéro non nul dans la mantissie.
La dernière déclaration n'a aucun sens. double.doubletolongbits (...) code> est un
long code>, qui est implicitement converti en
double code>, autoboxé et comparé par référence I> à
n2 code>.
Peut-être dans la dernière ligne doit être double.doubletolongits (N2)! = Double.doubletolongbits (double.nan) code>?
Cette impression false code>, car
doubletétolonflits code> convertit tout
nan code> s sur la même valeur. Mais c'est vrai si vous utilisez
doublettorawlongbits code>.
J'avais tort de la comparaison de référence (je viens de regarder le bytecode.) Le long code> est converti en
double code>, mais
n2 code> est auto-non-Boxed et la normale
double code> est appliquée.
Java utilise IEEE 754 pour ses numéros de points flottants et suit donc leurs règles. P >
Selon le Page Wikipedia sur Nan Il est défini comme ceci: P>
Un exemple bit-sage d'un point de précision standard de point de flottation IEEE NaN:
x111 1111 1Axx xxxx xxxx xxxx xxxx xxxx code> où
x code> signifie pas CARE I>. p> blockQuote>
Donc, il y a tout à fait quelques motifs de bit qui sont tous
NAN code> valeurs. p>
Merci. Est-ce garanti pour être portable entre VMS?
@simonn: Cette question me ferait arrêter un instant: comment voulez-vous utiliser exactement ce fait? Essayez-vous de soumettre des informations en bande à l'intérieur de la valeur NAN d'un double code>?
Sorte de. J'essaie d'imiter la sémantique d'un système où il existe plusieurs valeurs différentes qui agissent comme Nan, mais elles sont distinguables.
Juste comme une note latérale: j'ai depuis appris que distinguer différents valeurs NAN code> est non portable B> en Java. Certaines implémentations peuvent l'appuyer, d'autres peuvent réduire toutes les valeurs
nan code> à un petit ensemble de "LEGIT". Cela peut arriver à tout i> temps, y compris les affectations simples i>.
Vous avez besoin doublettorawlongbits code> plutôt que
doubletétolonflits code>.
DoubleTorwlongbits code> extrait la représentation binaire réelle.
DoubleToLonflits code> ne convertit pas, il convertit tout
nan code> s vers le
nan code> d'abord. p>
Merci pour la pointe sur doublettorawlongbits code>!
Voulez-vous dire existe-t-il d'autres
java.lang. *. Nan code>?
@Dominic: Non - j'ai ajouté ce que je pense être une clarification à la question.