본문 바로가기

Programming/C, C++

Floating Point (C++ Source Example)

float, double에 관한 소스코드 몇 가지를 정리한다.


#include <stdio.h>
#include <tchar.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
#include <iomanip>
#include <cmath>

using namespace std;

int main()
{
cout << numeric_limits<float>::max() << endl;
cout << numeric_limits<double>::min() << endl;
cout << numeric_limits<long double>::lowest() << endl;

return 0;
}


각 자료형의 최대 표현 가능한 범위, 최소 표현 가능한 범위(절대 값), 음수의 최소 표현 가능한 범위를 확인 할 수 있다. 


Output






int main()
{
    double zero = 0.0;
    double pos = 5.0 / zero;
    double neg = -5.0 / zero;
    double nan = zero / zero;

    cout << pos << " " << std::isinf(pos) << endl;
    cout << neg << " " << std::isinf(neg) << endl;
    cout << nan << " " << std::isnan(nan) << endl;
    cout << 1.0 << " " << std::isnan(1.0) << endl;

return 0;
}


계산한 값이 무한 값인지, Not a Number 인지 판별하여 true(1), flase(0)로 반환한다.


Output




int main()
{
    double d1 = 1.0;
    double d2 = 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1;

    cout << std::setprecision(20);
    cout << d1 << endl;
    cout << d2 << endl;

return 0;
}


앞서 얘기했던 부동소수점 계산 오차를 보여준다. 


여기서  setprecesion은 설정한 자릿수까지 출력하라는 의미다.


Output


'Programming > C, C++' 카테고리의 다른 글

Floating Point  (0) 2018.09.10
배열  (0) 2017.12.11
데이터형에 관계없는 swap() 함수  (0) 2017.12.11
void포인터, 함수 포인터  (0) 2017.12.11
포인터의 포인터  (0) 2017.12.11