leihen0218 发表于 2018-5-28 10:24:09

求高手指点

#include <stdio.h>

void main()
{
        double sqrtt(double x);
        int a;
        double c;
       
        printf("请输入一个数字\n");
        scanf("%d",&a);
        c =sqrtt(a);
        printf("%d的平方根是%f\n",a,c);
}

double sqrtt(double x)
{
        doublesum, summ;
        double i;
        for(i=0.9; ;)
        {
                i = i + 0.01;
                sum = i * i;
                summ = (i+0.01) * (i+0.01);
               
               
                if(sum <= x && summ > x )
                {
               
                        return i;
                        break;

                }

        }
       
}
这个输入4的时候,为什么输出的结果是1.99,调试半天也不知道为啥,求高手指点下,谢谢

BngThea 发表于 2018-5-28 10:28:07

应该是算法本身的精度问题,加之计算机内部的精度也有影响

leihen0218 发表于 2018-5-28 10:29:21

BngThea 发表于 2018-5-28 10:28
应该是算法本身的精度问题,加之计算机内部的精度也有影响

原来如此,我感觉我写的应该没有问题啊,肯定输出结果应该是2 啊
页: [1]
查看完整版本: 求高手指点