달력

12

« 2019/12 »

  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  
  •  
  •  

'오차 발생'에 해당되는 글 1

  1. Ex15-float형 오차 발생

float형 오차 발생

실수형은 기본적으로 double형을 선호

C언어 컴파일러는 기본적으로 실수를 소수점 6자리 출력해 줍니다.


 

소스코드

#include <stdio.h>

int main(void) {

float num1=0.123456789012345;

double num2=0.123456789012345;

printf("float : %f \n", num1); //0.123457 출력

//0.123456 789012345

printf("double : %lf \n", num2); //0.123457 출력

//6째자리까지 반올림해서 표현

//%.15f: float형을 15자리까지 표현

printf("float : %.15f \n", num1); //0.123456791043282 출력

//0.123456 789012345

//float형은 6째자리까지가 의미있는 데이터, 그래서 6자리를 넘어서는 자리부터는 데이터의 오차가 발생

printf("double : %.15lf \n", num2); //0.123456789012345 출력

float num3=0.123456; // float num1=0.123456F;

//실수형은 기본적으로 double형을 선호하기 때문에 double형으로 연산을 수행하게 됩니다.

//double형을 float형으로 변환시 데이터 손실이 발생할 있으므로 명시적으로 숫자뒤에 F 붙여주어야 합니다.

//(큰자료형에서 작은자료형으로 변환되므로)

//해결방법: 출력을 %lf하거나 자료형뒤에 F 붙여 명시적으로 float형임을 표시해줍니다.

printf("float : %f \n", num3); // 0.123456(소수점 6자리까지 출력)

printf("float : %.2f \n", num3); // 0.12(소수점 2자리까지 출력)

return 0;

}


   

   

출력결과

   

Posted by codedragon codedragon

댓글을 달아 주세요