몽상실현개발주의

[따배씨] 3.11 부동소수점형 본문

Language/C

[따배씨] 3.11 부동소수점형

migrationArc 2021. 5. 11. 18:04

[따배씨] 3.11 부동소수점형

따배씨 - 따라하며 배우는 C언어

3강 데이터와 C 언어

3.11 부동소수점형

  • 과학적 표기법 Scientific Notations
    • m X 10^n
      • m: significand
      • n: exponent
    • 123.45 = 12345 X 10^-2 = 1.2345 X 10^2
    • 유효숫자 5개: 1.2345 X 10^2
    • 유효숫자 6개: 1.23450 X 10^2
  • 4 byte (32 bit) 부동소수점수
    • sign + exponent (8 bits) + fraction (23 bits)
      • sign: 31번째
      • exponent: 23~30번째
      • fraction: 0~22번째 ; Sgnificand 중에서 소수점 아래 부분
    • 0.15625 = 0b0111110001000000000000000000000
      • (+1) X 2^(124-127) X (1 + 2^-2)= +0.15625
      • = +0.125 X 1.25
  • 범위 비교
    • 4 byte 정수 범위
      • -2,147,438,648 ~ 2,147,438,647
      • 대략 -2.14 X 10^9 ~ 2.14 X 10^9
    • 4 byte 부동 소수점수 범위
      • 대략 -3.4 X 10^38 ~ 3.4 X 10^38
      • 10진수 유효숫자 6개 - 정확도를 보장 할 수 있는 자리수가 6개

 

#include <stdio.h>
#include <float.h>

int main()
{
    printf("%u \n", sizeof(float));
    printf("%u \n", sizeof(double));
    printf("%u \n", sizeof(long double));
    
    float f = 123.456f;
    double d = 123.456;
    
    float f2 = 123.456;
    double d2 = 123.456f;
    
    int i = 3;
    float f3 = 3.f; // 3.0f
    double d3 = 3;  // 3.0

    float f4 = 1.234e10f;
    
    float f5 = 0xb.aP1;
    double d5 = 1.0625e0;
    
    printf("%f %F %e %E\n", f, f, f, f);
    printf("%f %F %e %E\n", d, d, d, d);
//    %f, %F: 실수 출력 // %e, %E: 과학적 표기법 출력
    printf("%a %A\n", f5, f5);
    printf("%a %A\n", d5, d5);
//    %a, %A: 16진수 출력
    
    return 0;
}
  • long double
    • long double 은 windows 에서 8byte, 64bit Linux, OS X 에서는 16byte
  • float f = 123.456f;
    • float 형은 literal f 를 붙여주는게 좋다
  • double d = 123.456;
    • double 형은 기본형이라서 literal 이 붙이 않아도 됨
  • float f2 = 123.456;
    • 8byte 메모리의 double 을 float 에 대입하므로 정밀도 문제로 warning 발생
  • 1.234e10f == 1.234 X 10^10 - 과학적 표기법

 

 

 


이 글의 모든 사진과 내용의 출처는 홍정모 교수님께 있음을 알려드립니다.

http://blog.naver.com/atelierjpro

 

실리콘 밸리의 프로그래머 : 네이버 블로그

안녕하세요! 홍정모 블로그에 오신 것을 환영합니다. 주로 프로그래밍 관련 메모 용도로 사용합니다. 강의 수강하시는 분들은 홍정모 연구소 카페로 오세요.

blog.naver.com

http://www.inflearn.com/course/following-c

 

홍정모의 따라하며 배우는 C언어 - 인프런 | 강의

'따배씨++'의 성원에 힘입어 새롭게 개발된 C 언어로 시작하는 프로그래밍 입문 강의입니다. '따배씨'와 함께 프로그래밍 인생을 업그레이드 해보세요., 따라하며 배우는 C언어 '따배씨++'의 성원

www.inflearn.com

 

Comments