若a,b均为浮点数,求c=fmod(a,b).经过验证得,必须当b为a的2的n次幂【n为0或负整数】时才是被整除的。怎么完全精确呢?比如,c=fmod(2.8,0.2),c不等于0,怎么避免出现这种情况呢?有其他合适的精确办法吗?
#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呢?
浮点数的比较没有完全精准这一说啊,c#中的decimal倒是可以用来比较浮点数
恩。一点都不会C#。哈哈,谢谢你的回答。就采纳你啦