for(j=0.001 ; ; j=j+0.001),在第三次循环时j的值变成了0.0030000000000000001
#include <stdio.h>#include <conio.h>
#include <math.h>
void main()
{
double i, m, n, j;
int k,l=0;
char c;
k = 0;
printf("输入任意键开始(ESC除外)\n");
while((c=getch())!=27)
{
printf("利用迭代法把一个数开方(精度0.001)\n");
printf("请输入一个数:");
scanf("%lf", &m);
for(j=0.001 ; j<=m ; j=j+0.001 )
{
for(i=0.001 ; ; i=i+0.001)
{
n = j / i;
if(j<0.009)
{
break;
}
if((n-i)<=0.001)
{
break;
}
}
printf("%0.3lf ", n);
k++;
if(0 == k%10)
{
printf("\n");
l++;
}
}
printf("\n");
printf("%d", l);
printf("\n");
printf("输入任意键继续(ESC除外)\n");
c = getch();
}
}
如图第三次循环时多了0.0000000000000000001;
前两次循环都是正常的;
这是为什么啊?
哪位大佬解答一下QWQ;
谢谢!
可以看得出,那是编译器精确的长度。 ba21 发表于 2018-3-19 21:15
可以看得出,那是编译器精确的长度。
啥意思?qwq
Neverturnback 发表于 2018-3-19 21:18
啥意思?qwq
意思就是你有你有精确度%2.f;编译器有编译器的精确度。叫你不要深究 ba21 发表于 2018-3-19 21:46
意思就是你有你有精确度%2.f;编译器有编译器的精确度。叫你不要深究
哦哦qwq
页:
[1]