logo

C 플로트 및 더블

뜨다 그리고 더블 저장하는 데 사용되는 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비트 저장하는 데 사용됩니다. 가수.
float의 메모리 표현

메모리에 저장하려는 십진수로 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비트 저장하는 데 사용됩니다. 가수.
double의 메모리 표현

같은 숫자 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을 사용하는 것이 좋습니다. 애플리케이션 요구 사항에 따라 적절한 데이터 유형을 선택하는 것이 중요합니다.