Ex15-float형 오차 발생
CODEDRAGON ㆍDevelopment/C, C++
반응형
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; } |
출력결과
'Development > C, C++' 카테고리의 다른 글
Ex10-포인터 변수의 간접 접근을 통해 저장된 데이터를 변경하기 (0) | 2015.08.19 |
---|---|
Ex09-3차원 포인터 (0) | 2015.08.18 |
Ex08-2차원 포인터 변수 연습 (0) | 2015.08.12 |
Ex07-2차원 포인터 변수에 1차원 포인터 변수의 주소 저장하기 (0) | 2015.08.10 |
Ex06-포인터 변수를 이용하여 간접 접근한 데이터를 통한 덧셈 연산 하기 (0) | 2015.08.05 |