더블이 NaN과 동일한지 확인하기 위해 어떻게 테스트하는가?
자바에 더블이 있는데 맞는지 확인하고 싶어.NaN
이것을 하기 위한 가장 좋은 방법은 무엇인가?
정적 메서드를 사용하거나Double
의 방법
// 1. static method
if (Double.isNaN(doubleValue)) {
...
}
// 2. object's method
if (doubleObject.isNaN()) {
...
}
단순 작업:
if (var == Double.NaN) {
...
}
NaN 및 부동 소수점 번호에 대한 IEEE 표준이 정의되는 방법 때문에 충분하지 않다.
시도:
이 이중 값이 NaN(Not-a-Number)이면 true를 반환하고 그렇지 않으면 false를 반환한다.
[에 유의하십시오.double.isNaN()
]은 복싱되지 않은 복싱은 그것과 관련된 방법을 가지고 있지 않기 때문에 작동하지 않을 것이다.
다음 명령을 통해 값이 유한한지 여부를 확인하는 것도 고려해 보십시오.Double.isFinite(value)
Java 8 이후 새로운 방법이 있다.Double
값이 NaN과 무한대가 아닌지 한 번에 확인할 수 있는 클래스.
/**
* 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)
다음을 사용하여 NaN을 확인할 수 있다.var != var
.NaN
같지 않다NaN
.
편집: 이것은 아마도 단연코 최악의 방법일 것이다.그것은 혼란스럽고, 읽기에는 끔찍하며, 전체적으로 나쁜 관행이다.
테스트 대상 값이 원시 값이 아닌 이중 값일 경우null
(분명히 숫자도 아니다) 그러면 다음 용어를 사용해야 한다.
(value==null || Double.isNaN(value))
이후isNaN()
원시인(원시적인 더블을 더블로 권투하는 것 보다)을 원하며, a를 통과한다.null
값(이중으로 상자를 해제할 수 없음)은 예상된 값 대신 예외를 초래함false
.
아래 코드 조각은 NaN을 보유하는 원시 유형을 평가하는 데 도움이 될 것이다.
double dbl = Double.NaN; Double.valueOf(dbl).isNaN() ? true : false;
초보자는 실제적인 예가 필요하다.다음 코드를 사용해 보십시오.
public class Not_a_Number {
public static void main(String[] args) {
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
참조URL: https://stackoverflow.com/questions/1456566/how-do-you-test-to-see-if-a-double-is-equal-to-nan
'Programing' 카테고리의 다른 글
시스템을 언제 불러야 할까?자바로 퇴장하다 (0) | 2022.04.16 |
---|---|
Vue 클래스 기반 구성 요소 경고: 속성이 인스턴스에서 정의되지 않고 렌더링 중에 참조됨 (0) | 2022.04.16 |
Vuex 돌연변이 반환이 마지막으로 삽입됨 (0) | 2022.04.15 |
선택 입력 /w Vuex 저장소 바인딩에 의한 동적 구성 요소 (0) | 2022.04.14 |
표준 라이브러리를 사용하여 정렬된 메모리만 할당하는 방법 (0) | 2022.04.14 |