c++四舍五入函数,向上取整,向下取整函数

来源:互联网 发布:linux vi强制退出命令 编辑:程序博客网 时间:2024/04/29 16:27

对含有小数点的数进行四舍五入是比较普遍的一种需求。在C++中也有类似的取整函数。在C++的头文件中有floor()和ceil()函数。在STL中还有round()函数。这三个函数的作用如下:

      函数名称函数说明2.12.9-2.1-2.9Floor()不大于自变量的最大整数22-3-3Ceil()不小于自变量的最大整数33-2-2Round()四舍五入到最邻近的整数23-2-3

从函数说明中可以看出,
(1) Floor()会取不大于自变量的最大整数,这样自变量是3.1或3.9是没有区别的,返回都是3;自变量是-2.1或-2.9也是没有区别的,返回都是-3;
(2) Ceil()会取不小于自变量的最大整数,这样自变量是3.1或3.9,返回都是4;自变量是-2.1或-2.9,返回的都是-2;
(3) Round()函数,才是我们需要的四舍五入的函数,因为它会返回离自变量最近的整数,这个返回的整数可能大于也可能小于原来的数,但是一定是离它最近的那个整数。

double floor (double x);      float floor (float x);long double floor (long double x);     double floor (T x);           // additional overloads for integral types

123456789101112
/* floor example */#include <stdio.h>      /* printf */#include <math.h>       /* floor */int main (){  printf ( "floor of 2.3 is %.1lf\n", floor (2.3) );  printf ( "floor of 3.8 is %.1lf\n", floor (3.8) );  printf ( "floor of -2.3 is %.1lf\n", floor (-2.3) );  printf ( "floor of -3.8 is %.1lf\n", floor (-3.8) );  return 0;}


Output:

floor of 2.3 is 2.0floor of 3.8 is 3.0floor of -2.3 is -3.0floor of -3.8 is -4.0
double ceil (double x);      float ceil (float x);long double ceil (long double x);     double ceil (T x);           // additional overloads for integral types
123456789101112
/* ceil example */#include <stdio.h>      /* printf */#include <math.h>       /* ceil */int main (){  printf ( "ceil of 2.3 is %.1f\n", ceil(2.3) );  printf ( "ceil of 3.8 is %.1f\n", ceil(3.8) );  printf ( "ceil of -2.3 is %.1f\n", ceil(-2.3) );  printf ( "ceil of -3.8 is %.1f\n", ceil(-3.8) );  return 0;}


Output:
ceil of 2.3 is 3.0ceil of 3.8 is 4.0ceil of -2.3 is -2.0ceil of -3.8 is -3.0
 double round (double x);      float round (float x);long double round (long double x);     double round (T x);           // additional overloads for integral types
/* round vs floor vs ceil vs trunc */#include <stdio.h>      /* printf */#include <math.h>       /* round, floor, ceil, trunc */int main (){  const char * format = "%.1f \t%.1f \t%.1f \t%.1f \t%.1f\n";  printf ("value\tround\tfloor\tceil\ttrunc\n");  printf ("-----\t-----\t-----\t----\t-----\n");  printf (format, 2.3,round( 2.3),floor( 2.3),ceil( 2.3),trunc( 2.3));  printf (format, 3.8,round( 3.8),floor( 3.8),ceil( 3.8),trunc( 3.8));  printf (format, 5.5,round( 5.5),floor( 5.5),ceil( 5.5),trunc( 5.5));  printf (format,-2.3,round(-2.3),floor(-2.3),ceil(-2.3),trunc(-2.3));  printf (format,-3.8,round(-3.8),floor(-3.8),ceil(-3.8),trunc(-3.8));  printf (format,-5.5,round(-5.5),floor(-5.5),ceil(-5.5),trunc(-5.5));  return 0;}



Output:
value   round   floor   ceil    trunc-----   -----   -----   ----    -----2.3     2.0     2.0     3.0     2.03.8     4.0     3.0     4.0     3.05.5     6.0     5.0     6.0     5.0-2.3    -2.0    -3.0    -2.0    -2.0-3.8    -4.0    -4.0    -3.0    -3.0-5.5    -6.0    -6.0    -5.0    -5.0
具体可查看文献:http://www.cplusplus.com/reference/cmath/round/

阅读全文
0 0