C++ 向上向下取整

向下取整

  1. 整数除法运算符 / 代表向下取整, 常用于计算当中(适用于正数,对于负数计算来说,只是在正数的结果上加了个负号)
    例如:5 / 2 = 2, -5 / 2 = -2
  2. C++ floor()函数, floor(x)返回一个小于或等于x的最大整数
    例如:floor(2.5) = 2, floor(-2.5) = -3
  3. 直接舍去小数部分,赋值给整数变量(适用于正数)
    例如:int a = 2.5, b = int(2.5), a, b数值都是2

向上取整

  1. C++ ceil()函数, ceil(x)返回一个大于x的最小正数
    例如:ceil(2.5) = 3, ceil(-2.5) = -2
  2. 公式 x = (a-1) / b + 1, 变形一下得 x = (a + b - 1) / b
  3. 直接舍去小数部分,赋值给整数变量(适用于负数)
    例如: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,
   大家要有知道的这是为什么的,欢迎在下面给我留言哦,大家一起交流交流
*/
上一篇:PCIe中断-MSI/MSI-X


下一篇:接PCIe开发项目