这个for循环为什么不能输出z=2.0是的值?
#include<stdio.h>
#include<math.h>
main()
{
double y;
int m;
for( y=0.0; y<=2.0; y=y+0.1 )
{
m = acos(1-y);
printf("y= %4.1lf m= %d\n",y,m);
}
} for循环,acos()函数
[解决办法]
ACOS函数的参数number表示角度对应的余弦值,数值必须在-1~1之间。看你当y=2.0时,操作的是2.1!!!
[解决办法]
浮点数不能精确表示
2.0在计算机中可能是2.0000001或者1.99999999,前者在楼主的程序中出错
[解决办法]
用10进制小数不能精确表示某些三进制小数0.1(3)=0.33333333333……(10)
同理,用二进制小数也不能精确表示某些10进制小数。
[解决办法]
浮点数有精确范围,所以可能无法精确到某个值,一般是通过和这个值的差和一个很小的数(比如0.0001等,越小说明精度要求越高)进行比较来判断的
[解决办法]