首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

简单有关问题:怎么判断float小数部分是否为零

2012-09-06 
简单问题:如何判断float小数部分是否为零?我的想法是float new,old10.01int tmp(int)oldnew(float)tm

简单问题:如何判断float小数部分是否为零?
我的想法是float new,old=10.01;
int tmp=(int)old;
new=(float)tmp;
if(0==(new-float))
...
太烦琐,有没高效点的方法?

[解决办法]

探讨
我的想法是float new,old=10.01;
int tmp=(int)old;
new=(float)tmp;
if(0==(new-float))
...
太烦琐,有没高效点的方法?

[解决办法]
我觉得楼主想表达的是先把要检验的数的小数部分去掉,转成整型,然后判断原来的数与整型的差,如果为0则说明小数部分为0
[解决办法]
float xx=10.01;
int yy=(int)xx;
if(0==(xx-(float)yy)
[解决办法]
if(!(f-(int)f))
[解决办法]
可以考虑一下fmod函数:
double w = 10.00, z;
z = fmod(w, int(w)); //获取小数部分.
[解决办法]
看过林老师的书
记得里面有个关于浮点零的比较
不建议直接用0==这样直接比较!!
顺便拿分走人
[解决办法]
从上面这几个答案来看,我叫喜欢5楼的答案
[解决办法]
请不要拿float类型的数与0比较,会有误差的,你用abs(x-int(x))<0.000001做判断吧,至于为什么是0.000001我也不清楚,嘿嘿,反正是误差范围就那么大
[解决办法]
LZ,float的精度不够,只能输出小数点后的六位数字,也就是说,如果小数点后的小数部分如果有效数字出现了多位连续的0的话,就成整数了,如 5.00000000000231
用modf()函数,用法是这样的:
头文件:<math.h>
函数原型:double modf(double x, double *ipart)
函数用途:分解x,以得到x的整数和小数部分
输入参数:x 待分解的数
输出参数:ipath,是 x 的整数部分
返回值:x 的小数部分
[解决办法]
如果这个库函数,LZ觉得麻烦的话,还可以这么来,将浮点数转换为字符串,然后自己编写一个循环就可以获取小数部分了,有这样一个将浮点数转换为字符串的库函数
功 能: 把浮点数转换成字符串
用 法: char *gcvt(double value, int ndigit, char *buf); 

查查帮助,就知道这函数怎么调用了~~
[解决办法]
其实你要知道浮点数的表示方式
直接取2进制中的某几位
全部为零就没有小数位

热点排行