고정 소수점 대 부동 소수점 수


109

고정 소수점과 부동 소수점 숫자에 대한 정의를 Google 전체에서 읽기 어렵 기 때문에 이해할 수 없습니다. 그러나 내가 읽은 어떤 것도 그들이 실제로 무엇인지에 대한 간단한 설명을 제공하지 않습니다. 예를 들어 평범한 정의를 얻을 수 있습니까?


또한 좋은 정의를 찾는 데 어려움이 있습니다. 제가 찾고있는 가장 중요한 것은 이러한 결과를 이해하는 데 도움이되는 것입니다. 3.11 + 42.0 = 45.110001 (45.11 아님), 3.12 + 42.0 = 45.119999 (45.12 아님), 3.15 + 42.0 = 45.150002 (45.15 아님).
Bart S.

1
저는 이것이 관련 토론이라고 생각합니다 (특히 부동 숫자가있는 함정과 고정 소수점으로 더 나은 정밀도를 설명하고 왜 돈을 부동 소수점으로 설명하고 싶지 않은지 설명합니다. stackoverflow.com/questions/6320209/…
Andrew Norman

주제가 언급 된 임의 링크 "OpenGL® ES OpenGL ES에는 부동 소수점 및 고정 소수점 시스템 과 EGL ™ 사양에 대한 프로필이 포함됩니다 ..."
The Red Pea

답변:


145

고정 소수점 숫자에는 정수 부분 (소수점 왼쪽 부분)에 대해 예약 된 특정 수의 비트 (또는 자릿수)와 소수 부분 (소수점 오른쪽 부분)에 대해 예약 된 특정 비트 수가 있습니다. 포인트). 숫자가 아무리 크든 작든 상관없이 항상 각 부분에 대해 동일한 수의 비트를 사용합니다. 예를 들어 고정 소수점 형식이 10 진수 인 IIIII.FFFFF경우 나타낼 수있는 가장 큰 숫자는 99999.99999이고 0이 아닌 가장 작은 숫자는입니다 00000.00001. 이러한 숫자를 처리하는 모든 코드에는 소수점이 어디에 있는지에 대한 기본 지식이 있어야합니다.

부동 소수점 숫자는 정수 부분 또는 소수 부분에 대해 특정 비트 수를 예약하지 않습니다. 대신,이 번호에 대한 일정한 수의 비트 (착신 보유 가수 또는 유효 숫자 ) 및 말 일정한 수의 비트 위치를 (착신 소수 자리가 앉고 번호 내의 지수 ). 따라서 지수에 대해 2 자리가 예약 된 10 자리의 부동 소수점 숫자는의 가장 큰 값 9.9999999e+50과 0이 아닌 가장 작은 값을 나타낼 수 있습니다 0.0000001e-49.


8
부동 소수점 숫자는 거의 항상 부호가 있으므로 최소값은 실제로 -9.9999999e+50.
브라이언 고든

4
또한 지수 편향이 있으므로 1,000,000에서 1,000,001 사이에서 할 수있는 것보다 0과 1 사이에서 훨씬 더 많은 이산 값을 나타낼 수 있습니다. 그리고 편향이 정밀도를 높이기에 충분하지 않을 때 두 개의 매우 유사한 숫자 간의 차이로 0을보고하지 않도록하는 것과 같은 부동 소수점 연산에는 많은 복잡한 문제가 있습니다.
Brian Gordon

28
@BrianGordon : 사인 비트를 잊지 않았습니다. 간단한 설명 을하기 위해 의도적으로 무시하고 최소 / 최대 및 최소 / 최대의 차이에 대해 걱정할 필요가 없습니다. 또한 의도적으로 지수 바이어스 (두 숫자 사이의 이산 값의 수와 관련이 없음), NaN, 무한대, 정규화, 점진적 언더 플로, 부호있는 0, 대부분의 부동 소수점이 이진이라는 사실 (첫 번째 비트 허용 제외 할 가수) 및 개념을 설명하는 데 불필요한 여러 측면이 있습니다.
Gabe 2011 년

2
최소 고정 소수점 수가 컷오프되는 이유는 무엇 00000.00001입니까? 나는 00000.00000대신 볼 것으로 기대하고 있습니다 . 또한 고정 소수점 숫자에 대해 더 자세히 설명하는 참조가 있습니까?
Nicholas Miller

4
@NickMiller : 혼동을 드려 죄송하지만 0이 아닌 숫자에 대해 이야기하고있었습니다. 내 예제 형식은 0, 0.00001, 0.00002, ..., 99999.99998, 99999.99999를 나타낼 수 있습니다.
Gabe

31

고정 소수점 숫자는 소수점 뒤에 고정 된 자릿수가 있음을 의미합니다. 부동 소수점 숫자는 소수점 뒤에 다양한 자릿수를 허용합니다.

예를 들어 소수점 뒤에 정확히 4 자리가 필요한 숫자를 저장하는 방법이 있다면 고정 소수점입니다. 그 제한없이 그것은 부동 소수점입니다.

종종 고정 소수점을 사용할 때 프로그래머는 실제로 정수를 사용하고 일부 숫자가 소수점을 넘어선다고 가정합니다. 예를 들어, 두 자리의 정밀도를 유지하고 싶을 수 있으므로 100은 실제로 1.00을 의미하고 101은 1.01을 의미하며 12345는 123.45를 의미합니다.

부동 소수점 숫자는 동일한 방식으로 매우 작거나 매우 큰 숫자를 나타낼 수 있기 때문에보다 일반적인 용도이지만 소수점 자리에 대한 추가 저장 공간을 확보해야하는 경우 약간의 불이익이 있습니다.


2
부동 소수점 사용은 예를 들어 정말 작고 정말 큰 부동 소수점 숫자를 함께 추가하는 경우와 같이 계산을 시작할 때 문제가됩니다. 합산 된 결과는 두 극단으로 숫자를 나타내야하고 더 낮은 소수는 잘려서 반올림되지 않기 때문에 정확도가 떨어집니다.
앤드류 노먼

2
또한 부동 소수점에서 지수 값의 잠재적 인 사용은 표준 숫자를 예상하는 컴퓨터 시스템에 문제를 일으킬 수 있습니다
Andrew Norman

5

내 이해에서 고정 소수점 산술은 정수를 사용하여 수행됩니다. 소수점 부분이 고정 된 양의 비트로 저장되거나 숫자에 필요한 소수점 정밀도 자릿수를 곱합니다.

수의 경우 예를 들어, 12.34요구가 저장 될 우리는 소수점 이후 정밀도의 두 자리가 필요 수를 곱하여 100얻을 1234. 이 숫자에 대해 수학을 수행 할 때이 규칙 세트를 사용합니다. 추가 5620또는 56.20이 번호에 굴복 할 6854데이터 또는68.54 .

고정 소수점 숫자의 소수 부분을 계산하려면 모듈로 (%) 피연산자를 사용합니다.

12.34 (의사 코드) :

v1 = 1234 / 100 // get the whole number
v2 = 1234 % 100 // get the decimal number (100ths of a whole).
print v1 + "." + v2 // "12.34"

부동 소수점 숫자는 프로그래밍에서 완전히 다른 이야기입니다. 부동 소수점 숫자에 대한 현재 표준은 숫자 데이터에 23 비트, 지수에 8 비트, 부호에 1과 같은 것을 사용합니다. 이에 대한 자세한 내용은이 Wikipedia 링크를 참조하십시오.


3

'고정 소수점'이라는 용어는 소수점 뒤, 때로는 앞까지 고정 된 자릿수로 숫자가 표현되는 해당 방식을 나타냅니다. 부동 소수점 표현을 사용하면 소수점의 위치가 숫자의 유효 자릿수를 기준으로 '부동'할 수 있습니다. 예를 들어 균일 한 소수점 배치 규칙을 사용하는 고정 소수점 표현은 숫자 123.45, 1234.56, 12345.67 등을 나타낼 수있는 반면 부동 소수점 표현은 1.234567, 123456.7, 0.00001234567, 1234567000000000 등을 추가로 나타낼 수 있습니다.


-6

번호 123.456789

  • 정수로서이 숫자는 123이됩니다.
  • 고정 소수점 (2)으로서이 숫자는 123.46이됩니다 (반올림했다고 가정).
  • 부동 소수점으로서이 숫자는 123.456789가됩니다.

부동 소수점을 사용하면 대부분의 모든 숫자를 매우 정확하게 표현할 수 있습니다. 고정은 덜 정확하지만 컴퓨터에서는 더 간단합니다 ..


11
숫자를 쓸 수있는 정밀도는 부동 소수점, 정수 또는 고정 소수점으로 작성되었는지 여부와 관련이 없습니다. 사용 가능한 유효 자릿수와 관련이 있습니다. 예를 들어, INT_MAX는 정수로 정확하게 표현할 수 있지만 정확히 표현하는 데 필요한 31 비트의 정밀도가 없기 때문에 float로 표현할 수없는 숫자입니다.
Kian

1
고정은 문제의 숫자를 처리 할 수있는 크기 인 한 가장 정확합니다. 고정 소수점 숫자로 수학을 수행 할 때 계산에 소수점 한계를 초과하는 나머지가있을 때 반올림이 발생합니다. 부동 소수점을 사용하면 매우 작은 숫자를 매우 큰 숫자에 추가하면 매우 부정확 한 값을 얻을 수 있습니다. 이 경우 반올림없이 숫자가 손실됩니다.
Andrew Norman

이것은 오해의 소지가 있고 잘못된 것입니다. 고정 소수점은 소수점 이하 자릿수가 고정되어 있음을 의미합니다. 얼마나 정확한지에 대해서는 언급하지 않습니다.
Oscar Smith
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.