Saya memiliki dobel di Jawa dan saya ingin memeriksa apakah ada NaN
. Apa cara terbaik untuk melakukan ini?
283
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 bagusvalue == Double.NaN
tidak berfungsi, tetapiDouble.isNaN(value)
berfungsi dengan baik.Coba
Double.isNaN()
:Perhatikan bahwa [
double.isNaN()
] tidak akan berfungsi, karena dobel tanpa kotak tidak memiliki metode yang terkait dengannya.sumber
Double.isNan()
dan tidakdouble.IsNan()
, bukan?Anda mungkin ingin mempertimbangkan juga memeriksa apakah suatu nilai terbatas
Double.isFinite(value)
. Karena Java 8 ada metode baru diDouble
kelas di mana Anda dapat memeriksa sekaligus jika nilai bukan NaN dan tak terbatas.sumber
Anda dapat memeriksa NaN dengan menggunakan
var != var
.NaN
tidak samaNaN
.EDIT : Ini mungkin metode yang paling buruk. Ini membingungkan, mengerikan untuk dibaca, dan praktik buruk secara keseluruhan.
sumber
isNan
lebih baik untuk dibaca, tetapi berfungsi, bukan? DanisNan
metode ini menggunakan ini untuk memeriksaNaN
.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.
sumber
Cuplikan kode di bawah ini akan membantu mengevaluasi tipe primitif yang menahan NaN.
double dbl = Double.NaN; Double.valueOf(dbl).isNaN() ? true : false;
sumber