当前位置:   article > 正文

C/C++之取整函数_c++向上取整函数

c++向上取整函数

C/C++之取整函数

后面的double x放的是你的浮点型参数。

取整函数向上取整和向下取整有现成的函数。不过它们的缺点是正数和负数用到的函数是相反的容易混淆。

函数名函数说明------>右边第一行都是测试数据,右边下面都是返回值1.11.5-1.1-1.5
floor()返回不大于自变量的最大整数11-2-2
ceil()返回不小于自变量的最大整数22-1-1
round()返回四舍五入到最邻近的整数12-1-2

round四舍五入函数则需要自己写。

所以这里我就列出自己写的函数。直接针对向上取整、向下取整、四舍五入的问题正负数通用的函数。

向上取整

double cei(double x)//向上取整 
{
	return (int)( (x>0.0)?x+1:x-1 );
} 
//用到了三目运算符和强制转换。
//解析,return里面的式子是三目运算符。因为强制转整形会自动去掉小数点,所以大于0的数+1,强转整形后小数位自动舍弃。小于0的数同理。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

向下取整

如果你要输出为浮点型,整形记得要强转成double型。

(double)( (int)(double x) )
//解析这个就是用到了强制转换整形,舍弃小数位。
  • 1
  • 2

四舍五入

自己写一个round函数

double round(double x)//返回浮点型
{
    return (int)( (x>0.0)?x+0.5:x-0.5 );
}
//解析,return里面的式子是三目运算符。因为强制转整形会自动去掉小数点,所以大于0的数+0.5如果小数位小于0.5那么整数位不会进1,大于等于0.5加了0.5后,整数位会进1。小于0的数同理。
  • 1
  • 2
  • 3
  • 4
  • 5

测试代码

#include <cstdio>
#include <iostream>
#include <cstring>
#include <cmath>
#include <algorithm>

using namespace std;

double round(double x)//四舍五入 
{
	return  (int)( (x>0.0)?x+0.5:x-0.5 );
}

double cei(double x)//向上取整 
{
	return (int)( (x>0.0)?x+1:x-1 );
} 

int main(void)
{
	double temp;//临时函数 
	double a = 1.1;
	//temp = double ceil(a);
	printf("a = %lf\na 的向上取整为%lf\na 的向下取整为%lf\na 的四舍五入为%lf\n\n",a,cei(a),(double)( (int)a),round(a) );
	double b = 1.5;
	printf("b = %lf\nb 的向上取整为%lf\nb 的向下取整为%lf\nb 的四舍五入为%lf\n\n",b,cei(b),(double)( (int)b),round(b) );
	a = -1.1;
	b = -1.5; 
	printf("a = %lf\na 的向上取整为%lf\na 的向下取整为%lf\na 的四舍五入为%lf\n\n",a,cei(a),(double)( (int)a),round(a) );
	printf("b = %lf\nb 的向上取整为%lf\nb 的向下取整为%lf\nb 的四舍五入为%lf\n\n",b,cei(b),(double)( (int)b),round(b) );
	
	return 0;
} 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

运行结果截图

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/678310
推荐阅读
相关标签
  

闽ICP备14008679号