2012-03-01 3 views
0

내가 아는 모든 언어 (파이썬, 자바, PHP, 자바 스크립트 등)에서 NaN 유형은 float (double)입니다. 그 이유가 무엇입니까? IEEE 754 [참고 : IEEE 754-2008 6 장 NaN 관련 정보]에서 찾지 못했습니다. NaN이 내부적으로 float 형식으로 저장되어 있더라도 분리 된 형식이 아니어야합니다 (null/nil/none과 비슷 함)? NaN에 대해 별도의 유형을 사용하는 언어가 있습니까?왜 NaN 유형이 float입니까?

+0

비슷합니까? http://stackoverflow.com/questions/986268/why-is-nan-not-a-number-only-available-for-doubles – Nav

+1

IEEE 754는 확실히 NaN이 무엇인지 (즉, 어디에서 왔는지) 지정합니다 ... 그래서 귀하의 질문은 결함있는 전제에 근거한 것 같습니다. –

+0

@GregHewgill : 그래서이 질문을하고 있습니다. 왜 다른 유형보다 유동적입니까? 그것은 단지 편의입니까 아니면 전통입니까? –

답변

1

NaN은 부동 소수점 수와 관련하여 specific meaning입니다. 언어가 자체의 값을 가진 "의미없는"결과 (예 : None, NA, #N/A 등)를 구현하려는 경우 FP 연산에 사용되는 언어와 관계없이 고유 한 특정 표시기가 필요합니다.

3

부동 소수점 나누기를 고려하면 /이라고합니다. 예쁜 분명히, 우리는 서명

function/: float x float -> float 

을 갖고 싶어하지만 우리는 또한 유형 float의 값으로 (표준에 따라)

0/0 = NaN 

그래서 NaN 요구를합니다.