Java bir çift var ve olup olmadığını kontrol etmek istiyorum NaN
. Bunu yapmanın en iyi yolu nedir?
Java bir çift var ve olup olmadığını kontrol etmek istiyorum NaN
. Bunu yapmanın en iyi yolu nedir?
Yanıtlar:
Statik kullanın Double.isNaN(double)
yöntemi veya Double
bireyin .isNaN()
yöntemi.
// 1. static method
if (Double.isNaN(doubleValue)) {
...
}
// 2. object's method
if (doubleObject.isNaN()) {
...
}
Basitçe:
if (var == Double.NaN) {
...
}
olduğunu yeterli değildir nasıl nedeniyle NaN IEEE standart ve kayan noktalı sayılar tanımlanır.
Double.isNaN should be (true)
güzel cevap
value == Double.NaN
işe yaramaz, ancak iyi Double.isNaN(value)
çalışır.
Deneyin Double.isNaN()
:
Bu Double değeri Sayı Değil (NaN) ise true değerini, aksi takdirde false değerini döndürür.
double.isNaN()
Kutusuz çiftler kendileriyle ilişkili yöntemlere sahip olmadığından [ ] çalışmaz.
Double.isNan()
ve olmamalı double.IsNan()
, değil mi?
Ayrıca bir değerin sonlu olup olmadığını kontrol etmeyi de düşünebilirsiniz Double.isFinite(value)
. Java 8'den beri, Double
sınıfta bir değerin NaN ve sonsuz olmadığını hemen kontrol edebileceğiniz yeni bir yöntem var .
/**
* Returns {@code true} if the argument is a finite floating-point
* value; returns {@code false} otherwise (for NaN and infinity
* arguments).
*
* @param d the {@code double} value to be tested
* @return {@code true} if the argument is a finite
* floating-point value, {@code false} otherwise.
* @since 1.8
*/
public static boolean isFinite(double d)
Kullanarak NaN kontrol edebilirsiniz var != var
. NaN
eşit değil NaN
.
EDIT : Bu muhtemelen en kötü yöntemdir. Kafa karıştırıcı, okunabilirlik için korkunç ve genel olarak kötü uygulama.
isNan
okunabilirlik için daha iyi, ama işe yarıyor, değil mi? Ve isNan
yöntem bunu kontrol etmek için kullanır NaN
.
isNaN
bunu kaputun altında yapar, ama nasıl çalışır? Bir şey nasıl eşit değildir?
Yeni başlayanların pratik örneklere ihtiyacı vardır. bu yüzden aşağıdaki kodu deneyin.
public class Not_a_Number {
public static void main(String[] args) {
// TODO Auto-generated method stub
String message = "0.0/0.0 is NaN.\nsimilarly Math.sqrt(-1) is NaN.";
String dottedLine = "------------------------------------------------";
Double numerator = -2.0;
Double denominator = -2.0;
while (denominator <= 1) {
Double x = numerator/denominator;
Double y = new Double (x);
boolean z = y.isNaN();
System.out.println("y = " + y);
System.out.println("z = " + z);
if (z == true){
System.out.println(message);
}
else {
System.out.println("Hi, everyone");
}
numerator = numerator + 1;
denominator = denominator +1;
System.out.println(dottedLine);
} // end of while
} // end of main
} // end of class