뜨다 그리고 더블 저장하는 데 사용되는 C 프로그래밍의 두 가지 기본 데이터 유형입니다. 소수 값 . 둘 다 부동 소수점 숫자를 저장하지만 값을 저장할 수 있는 정밀도 수준이 다릅니다.
이 기사에서 우리는 각각의 기억 표현과 차이점을 자세히 연구할 것입니다.
뜨다
Float는 단정밀도 부동 소수점 숫자를 저장하는 데 사용됩니다. 소수점 이하 6~7자리까지의 정밀도로 소수 값을 저장할 수 있습니다.
통사론
float var_name ;>
- 플로트의 크기는 4 바이트.
- Float는 다음과 같은 다양한 값을 저장할 수 있습니다. 3.4x10-383.4배까지 1038.
- 최대 값을 저장할 수 있습니다. 소수점 7자리 정밀도를 잃지 않고.
- float의 형식 지정자는 다음과 같습니다. %에프.
예
씨
팩토리 메소드 디자인 패턴
// C Program to illustrate float> #include> > int> main()> {> > // Syntax of declaring and initializing> > // the float variable> > float> myVariable = 789.123456f;> > > // printing floating point number> > printf> (> 'Float value is %f'> , myVariable);> > return> 0;> }> |
>
>산출
지도 대 세트
Float value is 789.123474>
위 출력에서 볼 수 있듯이, float의 제한된 비트로 인해 7번째 숫자 이후에는 십진수의 정밀도가 손실됩니다. 이러한 경우에는 double 데이터 유형이 권장됩니다.
메모: 모든 실수 리터럴은 기본적으로 double 유형입니다. 우리는 에프 리터럴 끝에 float 유형으로 정의합니다.
더블
Double은 배정밀도 부동 소수점 값을 저장하는 데 사용됩니다. 소수점 이하 15자리까지의 정밀도로 실수를 저장할 수 있는 더 큰 버전의 float입니다.
- 더블 사이즈는 8바이트.
- 이중의 범위는 다음과 같습니다. 1.7×10-3081.7×10으로+308.
- 최대 값을 저장할 수 있습니다. 소수점 15자리 정밀도를 잃지 않고.
- double의 형식 지정자는 다음과 같습니다. %lf
예
씨
씨앗 대 포자
#include> > int> main()> {> > // Syntax of declaring and initializing> > // the double variable> > double> myVariable = 789.123456;> > printf> (> 'Double value is %lf'> , myVariable);> > //%lf or %f both can be used to> > // print Float values> > return> 0;> }> |
자바의 인스턴스 오브
>
>산출
Double value is 789.123456>
float와 double은 어떻게 저장되나요?
C언어는 다음을 따른다. IEEE 754 표준 메모리에 부동 소수점 값을 표시하기 위한 것입니다. 바이너리 형식으로 메모리에 직접 저장되는 int 유형과 달리 float 값은 지수와 가수의 두 부분으로 나누어 저장됩니다.
캣 팀프 순 가치
IEEE 754에 따르면 부동 소수점 값은 3가지 구성 요소로 구성됩니다.
- Sign Bit: 숫자의 부호를 나타냅니다. 0은 양수를 나타내고 1은 음수를 나타냅니다. 편향 지수: 숫자의 지수는 음수 또는 양수일 수 있으므로 직접 저장할 수 없으므로 지수에 편향을 추가하는 편향 지수를 사용합니다. 정규화된 가수(Normalized Mantissa): Matissa는 과학 표기법의 숫자, 즉 숫자의 정밀 비트입니다.
C float 메모리 표현
float의 크기는 32비트이며 그 중 다음이 포함됩니다.
- MSB(최상위 비트)는 데이터를 저장하는 데 사용됩니다. 징후 번호의.
- 다음 8비트 저장하는 데 사용됩니다. 멱지수.
- 남은 23비트 저장하는 데 사용됩니다. 가수.

예
메모리에 저장하려는 십진수로 65.125를 사용하겠습니다.
Converting to Binary form, we get: 65 = 1000001 0.125 = 001 So, 65.125 = 1000001.001 = 1.000001001 x 106 Normalized Mantissa = 000001001 Now, according to the standard, we will get the baised exponent by adding the exponent to 127, = 127 + 6 = 133 Baised exponent = 10000101 And the signed bit is 0 (positive) So, the IEEE 754 representation of 65.125 is, 0 10000101 00000100100000000000000>
C 이중 메모리 표현
float의 크기는 32비트이며 그 중 다음이 포함됩니다.
- MSB(최상위 비트)는 데이터를 저장하는 데 사용됩니다. 징후 번호의.
- 다음 11비트 저장하는 데 사용됩니다. 멱지수.
- 남은 52비트 저장하는 데 사용됩니다. 가수.

예
같은 숫자 65.125를 예로 들어보겠습니다.
From above, 65.5 = 1.000001001 x 106 Normalized Mantissa = 000001001 Now, according to the standard, bais is 1023. So, = 1023 + 6 = 1029 Baised exponent = 10000000101 And the signed bit is 0 (positive) So, the IEEE 754 representation of 65.125 is, 0 10000000101 0000010010000000000000000000000000000000000000000000>
플로트와 더블의 차이점
포인트들 | 뜨다 | 더블 |
---|---|---|
정도 | Float는 소수점 이하 7자리까지의 정밀도를 제공하는 단정밀도 IEEE 754 부동 소수점입니다. | Double은 소수점 이하 15자리까지의 정밀도를 제공하는 배정밀도 IEEE 754 부동 소수점입니다. |
메모리 사용량 | Float는 32비트 또는 4바이트의 메모리를 사용합니다. | Double은 64비트 또는 8바이트의 메모리를 사용합니다. |
범위 | Float는 3.4 x 10의 다양한 값을 저장할 수 있습니다.-383.4x10으로+38. | double의 범위는 1.7×10입니다.-3081.7×10으로+308. |
형식 지정자 | %에프 float의 형식 지정자입니다. | %lf double의 형식 지정자입니다. |
메모리 표현 | 부호 = 1비트 지수 = 8비트 가수 = 23비트 | 부호 = 1비트 지수 = 11비트 가수 = 52비트 |
결론
결론적으로 C에서는 십진수에 float와 double을 모두 사용하지만 정밀도, 메모리 사용량, 범위 및 속도 측면에서 다릅니다. 공간이 제한되어 정밀도가 저하될 수 있는 경우에는 float를 사용하는 것이 더 좋으며, 공간이 문제가 되지 않는 고정밀 애플리케이션에는 double을 사용하는 것이 좋습니다. 애플리케이션 요구 사항에 따라 적절한 데이터 유형을 선택하는 것이 중요합니다.