赞
踩
取整与取小数运算和加减乘除一样应该算是C++中的基础运算,利用C++编程科学计算或者处理数据是会经常用到。
就目前用到的以及查阅资料所见的一些说法,这两种运算主要通过类型转换和专有函数来实现。
基本运算符,“/”有截取整数部分的作用,实际上应该是”/“的多态性导致:”/“根据参与运算的数据类型返回特定的某一种数据类型
(1)”/“两边都是整型时,返回整型数据,即会将运算的结果截取整数部分,即使用浮点型变量接收数据,接收到的也是整型又转换成浮点型的数据
cout << "9/10 " << 9/10 << endl;//结果为0
double a = 9 / 10;//a=0.0
(2)”/“两边有浮点型时返回浮点型数据,运算时也会对整型强制转换为浮点型。
(注意一点“/”在计算过程中,如果要保留小数位,一定要注意两边的至少有一个是浮点数,否则结果会自动截掉小数位造成数据异常)
cout << "9.0/10 " << 9.0/10 << endl;//结果为0.9
通过将浮点型数据强制转换为整型,得到浮点型数据的整数部分,小数部分被舍去
int a = (int)9.8;//结果a=9
int b=int(-9.8)//b=-9
在matlab中有很多取整函数可用,但在C++并不全都有对应,有些函数像fix()向0取整C++中没有,需要自己编写
(1)matlab中fix()向0取整,正数和负数取整方向相反,正数取小于某数的最大整数,负数取大于某数的最小整数,C++中没有对应函数,但可以通过这种方法实现
(方法并不唯一,见仁见智)
long fix(double a)
{
double buf=a;//中间变量
//将原数取绝对值,利用ceil()向下取整
buf = abs(buf);
buf = ceil(buf);
if(a<0)
buf=-buf;
return buf;
}
(2)ceil(),返回整型值
向上取整,也即向无穷大取整,天花板函数
ceil(1.1)//返回2
ceil(-1.1)//返回-1
(3)floor(),返回整型值
向下取整,也称向负无穷取整,地板函数
floor(1.9)//返回1
floor(-1.1)//返回-2
(4)round(),返回整型值
对绝对值四舍五入,取值不受正负号影响
round(1.5)//返回2
round(1.4)//返回1
round(-1.2)//返回-1
round(-1.5)返回-2
c++没有专有的取小数部分函数,但是可以通过原数减去整数部分来取
double a=1.1-floor(1.1)//a=0.1
double b=-1.1-ceil(-1.1)//b=-0.1
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。