向下取整
- 整数除法运算符
/
代表向下取整, 常用于计算当中(适用于正数,对于负数计算来说,只是在正数的结果上加了个负号)
例如:5 / 2 = 2
,-5 / 2 = -2
- C++ floor()函数, floor(x)返回一个小于或等于x的最大整数
例如:floor(2.5) = 2
,floor(-2.5) = -3
- 直接舍去小数部分,赋值给整数变量(适用于正数)
例如:int a = 2.5, b = int(2.5), a, b数值都是2
向上取整
- C++ ceil()函数, ceil(x)返回一个大于x的最小正数
例如:ceil(2.5) = 3
,ceil(-2.5) = -2
- 公式
x = (a-1) / b + 1
, 变形一下得x = (a + b - 1) / b
- 直接舍去小数部分,赋值给整数变量(适用于负数)
例如:int a = -2.5, b = int(-2.5), a, b数值都是-2
补充:round()函数 用于四舍五入。转自https://blog.csdn.net/m0_46070659/article/details/105558575
正常用法:
对于小数而言,round()函数仅仅保留到整数位,即仅仅对小数点后一位四舍五入,
样例:
round(1.5)=2.000000
round(1.56)=2.000000
round(-1.5)=-2.000000
round(-1.56)=-2.000000
保留小数用法:
如果想要保留小数位数,则可以先乘后除
样例:
#include<stdio.h>
#include<math.h>
int main()
{
double x=1.5684;
printf("对1.5684保留两位有效数字:");
printf("%.2lf\n",round(x*100)/100);
return 0;
}
结果:
对1.5684保留两位有效数字:1.57
手写round():
round()函数原理为
x=(int)(x+0.5)公式,故可以自己写出round()函数
#include<cstdio.h>
double round(double x)
{
return (int)(x+0.5);
}
/* 不过这里我有一个问题,就是这个round函数我试了一下,
这个函数应该是返回一个double类型的数据,但是用cout输出的结果不是一个double类型的,
比如我输入的a是2.5,那么输出的结果就是3,我输入2.6,输出的结果就是3.1,
大家要有知道的这是为什么的,欢迎在下面给我留言哦,大家一起交流交流
*/