首页 新闻 搜索 专区 学院

关于浮点数求余判断其能否整除的问题

0
[已解决问题] 解决于 2013-04-27 10:45

若a,b均为浮点数,求c=fmod(a,b).经过验证得,必须当b为a的2的n次幂【n为0或负整数】时才是被整除的。怎么完全精确呢?比如,c=fmod(2.8,0.2),c不等于0,怎么避免出现这种情况呢?有其他合适的精确办法吗?

C C++
问题补充:

#include<stdio.h>
#include<math.h>
void main()
{
double a=2.8,b=0.2,c=0.0;
c=fmod(a,b);
printf("a=%.16lf,b=%.16lf,c=%.16lf\n",a,b,c);
getch();
}

输出:
a=2.7999999999999998,b=0.2000000000000000,c=0.1999999999999997
计算机竟然是这个结果啊,a怎么不是2.8呢?

assemble的主页 assemble | 菜鸟二级 | 园豆:263
提问于:2013-04-26 21:37
< >
分享
最佳答案
0

浮点数的比较没有完全精准这一说啊,c#中的decimal倒是可以用来比较浮点数

奖励园豆:5
chenping2008 | 大侠五级 |园豆:9836 | 2013-04-27 08:59

恩。一点都不会C#。哈哈,谢谢你的回答。就采纳你啦

assemble | 园豆:263 (菜鸟二级) | 2013-04-27 10:45
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册