2013-03-14 2 views
3

최근 Java 가상 머신 사양에서 JVM이 NaN 값을 지원하지 않으며 오버플로 신호를 보내는 방법도 읽지 않습니다.JVM이 NaN 대 스칼라를 지원하지 않는다. Double.NaN

내가 특별히의 JVM (7)의 섹션 2.8.1 말하는 겁니다의 JVM 및 IEEE 754, 내용의 글 머리에서 지원하는 부동 소수점 연산 사이의 주요 차이점 :

"The floating-point operations of the Java Virtual Machine do not throw 
exceptions, trap, or otherwise signal the IEEE 754 exceptional conditions of 
invalid operation, division by zero, overflow, underflow, or inexact. The Java 
Virtual Machine has no signaling NaN value." 

내가 그리워 있습니까 이해해? 스칼라 (Bytecode의 Java 기본 요소를 사용하여 숫자 유형을 나타냄) 및 Java의 Double 객체에는 NaN 및 Positive/Negative Infinity 값 (자바에서 해당 이진 값을 문서화 한 값)이 있습니다. JVM이 지원하지 않으면 어떻게 효율적으로 처리 할 수 ​​있습니까?

+0

빠른 Google 검색 결과 Java에 (조용한) ['Double.NaN']이 있음을 알 수 있습니다 (http://docs.oracle.com/javase/7/docs/api/java/lang/Double.html#NaN)뿐만 아니라 스칼라. 그게 없으면 [* 신호 * NaN] (http://en.wikipedia.org/wiki/NaN#Signaling_NaN)입니다. – DaoWen

답변

15

당신이 인용 한 텍스트에는 신호 NaN이없고, NaN이 없다는 내용이 나와 있습니다.

Java의 부동 소수점 연산은 예상 값 (NaN 및 무한대 포함)을 생성하지만 예외는 발생시키지 않습니다.