2011-10-05 3 views
6

내가 그 숫자뿐만 아니라 배정 밀도 형식으로 정확히 표현 될 수있는 특정 될 수있는 IEEE-754 단 정밀도 형식 (일반적으로 일부 언어/플랫폼에 float라고도 함)에 표시되는 임의의 수를 감안할 때? 그렇다면모든 단 정밀도 숫자는 배정도 형식으로 나타낼 수 있습니까?

은 유효한 속성이 단 정밀도와 네 배 정밀도를 위해 이중 정밀도 반 정밀도를 고려할 때이다?

+0

내 기억은 가수/지수에 할당 된 비트 수만 다르다는 것입니다. 그러나, 나는 참조가 없으므로 이것은 대답이 아닙니다. 하지만 +1, 좋은 질문입니다. – kdgregory

답변

5

예, double은 float이 수있는 모든 숫자를 나타낼 수 있습니다. 마찬가지로 쿼드 정밀도 등에

부동 소수점 수 (이 경우, 0.625) 1.01b x 2^-1 같은 형태로 표현된다. 숫자의 중요한 구성 요소는 significand이며, 기본적으로 첫 번째 숫자 바로 다음의 기수 점과 지수가있는 2 진수입니다.

이진 부동 소수점 형식 사이의 유일한 주요 차이는 각 성분의 비트의 수이다. 숫자가 사용하는 비트 수가 많을수록 각 부분에 대해 더 많은 비트를 사용할 수 있습니다. 따라서 32 비트 "부동 소수점"은 유효 숫자에 대해 1.01000000000000000000000을 가질 수 있으며 점 (64 비트) "이중"은 점 뒤에 약 50 자리를 갖습니다. 즉, 부동 소수점에서 정확하게 표현할 수있는 모든 숫자는 정밀도가 증가 (읽기 : 유효 자릿수) 및 증가 된 범위를 모두 갖기 때문에 두 배로 정확하게 표현할 수 있습니다. 이는 64 비트 정수형 변수가 32 비트 정수를 보유 할 수있는 것과 유사합니다. 여분의 비트는 거의 사용되지 않습니다.

물론 반올림 오류로 인해 잘려나 간 비트는 이중으로 변환 할 때 숫자로 되돌아 가지 않습니다. 즉, 부동 소수점에 0.3을 넣으면 0.2999999875와 같은 부정확 한 결과가됩니다. 또는 뭔가 (나는 계산과 같은 느낌이 들지 않습니다), 0.3에 가까워지면 두 배로 변환 할 수 없습니다 - 여전히 0.2999999875가 될 것입니다. 근사치를 원한다면 처음부터 복식으로 계산을 다시해야합니다.

3

예. 실제로보다 정확한 선언문을 만들 수 있습니다. 두 개의 단 정밀도 숫자은 정확하게 배정도로 나타낼 수 있습니다 (반, 단일 또는 이중 및 쿼드의 경우에도 마찬가지 임).

관련 문제