赞
踩
后面的double x放的是你的浮点型参数。
取整函数向上取整和向下取整有现成的函数。不过它们的缺点是正数和负数用到的函数是相反的容易混淆。
函数名 | 函数说明------>右边第一行都是测试数据,右边下面都是返回值 | 1.1 | 1.5 | -1.1 | -1.5 |
---|---|---|---|---|---|
floor() | 返回不大于自变量的最大整数 | 1 | 1 | -2 | -2 |
ceil() | 返回不小于自变量的最大整数 | 2 | 2 | -1 | -1 |
round() | 返回四舍五入到最邻近的整数 | 1 | 2 | -1 | -2 |
round四舍五入函数则需要自己写。
所以这里我就列出自己写的函数。直接针对向上取整、向下取整、四舍五入的问题正负数通用的函数。
double cei(double x)//向上取整
{
return (int)( (x>0.0)?x+1:x-1 );
}
//用到了三目运算符和强制转换。
//解析,return里面的式子是三目运算符。因为强制转整形会自动去掉小数点,所以大于0的数+1,强转整形后小数位自动舍弃。小于0的数同理。
如果你要输出为浮点型,整形记得要强转成double型。
(double)( (int)(double x) )
//解析这个就是用到了强制转换整形,舍弃小数位。
自己写一个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的数同理。
#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; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。