2014-09-13 3 views
-2

: 우리는 이미이 점을 변수를 부동의 기본값 것을 보았다D 프로그래밍 언어의 .nan은 무엇입니까? 는 D 프로그래밍 튜토리얼에서

. .nan은 무의미한 부동 점 표현의 결과로 나타날 수 있습니다.

import std.stdio; 

void main() 
{ 
    double zero = 0; 
    double infinity = double.infinity; 

    writeln("any expression with nan: ", double.nan + 1); 
    writeln("zero/zero   : ", zero/zero); 
    writeln("zero * infinity  : ", zero * infinity); 
    writeln("infinity/infinity : ", infinity/infinity); 
    writeln("infinity - infinity : ", infinity - infinity); 
} 

그러나 정확히 Double.NaN의 것입니다 : 예를 들어 다음 프로그램에서 부동 소수점 표현은 모두 Double.NaN의 생산? 확실히 그것은 어떤 종류의 숫자 일 것임에 틀림 없는가? 이것이 반드시 분쟁으로 이어지지는 않습니까?

+1

http://en.wikipedia.org/wiki/NaN – user763305

+0

Java, C, C++ 및 다른 많은 언어에서와 동일한 의미입니다. 예 : http://stackoverflow.com/questions/2618059/in-java-what-does-nan-mean –

+0

downvote 때마다 downvoted 이유를 적어주세요. 이것은 나에게 유효한 질문처럼 보입니다. – richarddonkin

답변

2

nan은 "숫자가 아님"을 의미하며 기본적으로 부동 소수점 연산의 오류 표시기입니다. 어떤 다른 수학은 의미가 없으므로 어떤 수학은 수학을 통해 결과를 얻습니다. 그것이 nan + 1 == nan 인 이유입니다. 0으로 나누면 아무 것도 의미가 없어지므로

+0

제 질문은 이름에도 불구하고 여전히 내부적으로 숫자가 표시되어 있습니다 (즉, 위키 백과에 따르면) s111 1111 1axx xxxx xxxx xxxx xxxx xxxx입니다. 그래서, 나노가이 숫자로 표현된다면,이 숫자 자체를 사용하고 싶다면 어떻게해야합니까? – qed

+2

오, 지금 무슨 뜻인지 알 겠어. 예, 나노를 나타내는 비트 시퀀스가 ​​있지만 일반적인 사용법과 충돌하지 않습니다 (부동 소수점 값은 부정확합니다). 이중의 다른 비트는 부호, 지수 및 값을 나타냅니다. 그래서 개념적으로, 번호 15300을 저장하는 것은 1.53 x 10^4와 비슷한 형태로 이루어지며, 1.53과 4는 xxxx 비트로 압축됩니다. 내가 언급 한 정밀도는 64 비트 정수로 표현할 수있는 모든 정확한 값을 이중으로 표현할 수있는 것은 아니라는 사실을 의미합니다. 실제로 일부 비트는 나노와 같은 신호를 전달하는 데 사용되지만 반올림하면 대개이 값이 숨겨집니다. –

+0

오케이. 번호 시스템의 표현은 컴퓨터에서는 드물다. 감사! – qed

관련 문제