您的位置:首页 > 编程语言 > C语言/C++

C/C++ 取整函数ceil(),floor()

2016-02-05 09:38 411 查看
#include <math.h> double
floor(double x); 
float floorf(float x);
long double floorl(long double x);



double floor(double x);
double ceil(double x);

使用floor函数。floor(x)返回的是小于或等于x的最大整数。

如:     floor(10.5) == 10    floor(-10.5) == -11

使用ceil函数。ceil(x)返回的是大于x的最小整数。

如:     ceil(10.5) == 11    ceil(-10.5) ==-10

    

floor()是向负无穷大舍入,floor(-10.5) == -11;

ceil()是向正无穷大舍入,ceil(-10.5) == -10

不得不说点:/ % 四舍五入 向上取整(ceil()) 向下取整(floor)

 1. /

    //Test "/"

    cout << "Test \"/\"!" << endl;

    cout << "7   / 2   = " << 7/2 << endl;      //3

    cout << "7   / 2.0 = " << 7/2.0 << endl;    //3.5

    cout << "7.0 / 2   = " << 7.0/2 << endl;    //3.5

    cout << "7.0 / 2.0 = " << 7.0/2.0 << endl; //3.5

    cout << "7   / 3   = " << 7/3 << endl;      //2

    cout << endl;

2. %

    //Test "%"

    cout << "Test \"%\"!" << endl;

    cout << "9   % 3   = " << 9%3 << endl;      //0

    cout << "9   % 4   = " << 9%4 << endl;      //1

    //cout << "9.0 % 3   = " << 9.0%3 << endl;

    //cout << "9   % 3.0 = " << 9%3.0 << endl;

    cout << endl;

3. 四舍五入

    //Test round()

    cout << "Test \"四舍五入\"!" << endl;

    double dRoundA = 1.4;

    double dRoundB = 1.6;

    double dRoundLowA = -1.4;

    double dRoundLowB = -1.6;

    double dRoundLowC = 0.0;

    cout << dRoundA << " = " << RoundEx(dRoundA) << endl;         //1

    cout << dRoundB << " = " << RoundEx(dRoundB) << endl;         //2

    cout << dRoundLowA << " = " << RoundEx(dRoundLowA) << endl;   //-1

    cout << dRoundLowB << " = " << RoundEx(dRoundLowB) << endl;   //-2

    cout << dRoundLowC << " = " << RoundEx(dRoundLowC) << endl;   //0

    cout << endl;

double RoundEx(const double& dInput)

{

    double dIn = dInput;

    if (dInput >= 0.0)    //???

    {

        return int(dIn + 0.5);

    } 

    else

    {

        return int(dIn - 0.5);

    }

}

4. ceil() 向上取整

    //Test ceil() 向上取整

    cout << "Test ceil() 向上取整!" << endl; 

    cout << "ceil 1.2 = " << ceil(1.2) << endl;      //2

    cout << "ceil 1.8 = " << ceil(1.8) << endl;      //2

    cout << "ceil -1.2 = " << ceil(-1.2) << endl;    //-1

    cout << "ceil -1.8 = " << ceil(-1.8) << endl;    //-1

    cout << "ceil 0.0 = " << ceil(0.0) << endl;      //0

    cout << endl;

5. floor() 向下取整

    //Test floor() 向下取整

    cout << "Test floor() 向下取整!" << endl;

    cout << "floor 1.2 = " << floor(1.2) << endl;    //1

    cout << "floor 1.8 = " << floor(1.8) << endl;    //1

    cout << "floor -1.2 = " << floor(-1.2) << endl; //-2

    cout << "floor -1.8 = " << floor(-1.8) << endl; //-2

    cout << "floor 0.0 = " << floor(0.0) << endl;    //0

    cout << endl;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: