Saya memiliki dobel di Jawa dan saya ingin memeriksa apakah ada NaN
. Apa cara terbaik untuk melakukan ini?
Saya memiliki dobel di Jawa dan saya ingin memeriksa apakah ada NaN
. Apa cara terbaik untuk melakukan ini?
Jawaban:
Gunakan statis Double.isNaN(double)
metode, atau Anda Double
's .isNaN()
metode.
// 1. static method
if (Double.isNaN(doubleValue)) {
...
}
// 2. object's method
if (doubleObject.isNaN()) {
...
}
Cukup melakukan:
if (var == Double.NaN) {
...
}
adalah tidak cukup karena bagaimana standar IEEE untuk NaN dan nomor floating point didefinisikan.
Double.isNaN should be (true)
jawaban yang bagus
value == Double.NaN
tidak berfungsi, tetapi Double.isNaN(value)
berfungsi dengan baik.
Coba Double.isNaN()
:
Mengembalikan nilai true jika nilai ganda ini adalah Not-a-Number (NaN), false jika tidak.
Perhatikan bahwa [ double.isNaN()
] tidak akan berfungsi, karena dobel tanpa kotak tidak memiliki metode yang terkait dengannya.
Double.isNan()
dan tidak double.IsNan()
, bukan?
Anda mungkin ingin mempertimbangkan juga memeriksa apakah suatu nilai terbatas Double.isFinite(value)
. Karena Java 8 ada metode baru di Double
kelas di mana Anda dapat memeriksa sekaligus jika nilai bukan NaN dan tak terbatas.
/**
* 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)
Anda dapat memeriksa NaN dengan menggunakan var != var
. NaN
tidak sama NaN
.
EDIT : Ini mungkin metode yang paling buruk. Ini membingungkan, mengerikan untuk dibaca, dan praktik buruk secara keseluruhan.
isNan
lebih baik untuk dibaca, tetapi berfungsi, bukan? Dan isNan
metode ini menggunakan ini untuk memeriksa NaN
.
isNaN
apakah ini di bawah tenda, tetapi bagaimana cara kerjanya? Bagaimana sesuatu yang tidak sama dengan dirinya sendiri ??
Pemula membutuhkan contoh-contoh praktis. jadi coba kode berikut.
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