关于c的double双精度型

来源:百度知道 编辑:UC知道 时间:2024/05/17 08:33:08
在下列求开方的C代码中,为什么是double型返回就是0,而float与int有返回值?
#include<stdio.h>
#include<math.h>
main()
{
double x;
scanf("%f",&x);
if(x>=0)
printf("%10.6f",sqrt(x));

else
printf("Enter Error Number!!");
}

输入的时候类型错误了,应该用%lf,而不是%f,因为double和float在内存分配上存在差异,所以用scanf函数进行输入的时候要加以区别。而输出的时候可以用%f代替%lf,但是最好还是用%lf呵呵,修改程序如下:
#include<stdio.h>
#include<math.h>
void main()
{
double x;
scanf("%lf",&x);
if(x>=0)
printf("%10.6lf",sqrt(x));

else
printf("Enter Error Number!!");
}

双精度的为数 有限