কেন যে যুক্তি
NaNমানে Not a Number। সংখ্যা কী নয়? কিছু. আপনার একদিকে কিছু থাকতে পারে এবং অন্যদিকে কিছু থাকতে পারে, তাই কোনও কিছুই গ্যারান্টি দেয় না যে উভয়ই সমান। NaNএর সাথে গণনা করা হয় Double.longBitsToDouble(0x7ff8000000000000L)এবং আপনি যেমন নথিতে দেখতে পারেন longBitsToDouble:
যুক্তি সীমার মধ্যে কোনো মান থাকে তবে 0x7ff0000000000001Lমাধ্যমে
0x7fffffffffffffffLবা ব্যাপ্তির মধ্যে 0xfff0000000000001Lদিয়ে
0xffffffffffffffffL, ফলে একটি হল NaN।
এছাড়াও, NaNযুক্তিযুক্তভাবে এপিআই এর ভিতরে চিকিত্সা করা হয়।
নথিপত্র
/**
* A constant holding a Not-a-Number (NaN) value of type
* {@code double}. It is equivalent to the value returned by
* {@code Double.longBitsToDouble(0x7ff8000000000000L)}.
*/
public static final double NaN = 0.0d / 0.0;
উপায় দ্বারা, NaN হয় আপনার কোড নমুনা হিসাবে পরীক্ষিত:
/**
* Returns {@code true} if the specified number is a
* Not-a-Number (NaN) value, {@code false} otherwise.
*
* @param v the value to be tested.
* @return {@code true} if the value of the argument is NaN;
* {@code false} otherwise.
*/
static public boolean isNaN(double v) {
return (v != v);
}
সমাধান
ব্যবহার কি আপনি কি করতে পারেন compare/ compareTo:
Double.NaNএই পদ্ধতিটিকে নিজের সমতুল্য এবং অন্যান্য সমস্ত doubleমানের (সহ
Double.POSITIVE_INFINITY) এর চেয়ে বড় হিসাবে বিবেচনা করা হয় ।
Double.compare(Double.NaN, Double.NaN);
Double.NaN.compareTo(Double.NaN);
বা equals,:
যদি thisএবং argumentউভয়ই উপস্থাপন করে Double.NaNতবে মানটি থাকা সত্ত্বেও
equalsপদ্ধতিটি ফিরে আসে ।trueDouble.NaN==Double.NaNfalse
Double.NaN.equals(Double.NaN);