c语言中double和float使用时的区别

#做题时遇到一个题目不明白为什么要用double

题目如下

Description
给定一个球体的直径(非负数),求它的表面积和体积。
Input
输入只有一个非负实数,表示球体的直径。
Output
输出有2行,格式见样例。其中等号(“=”)前后各有一个空格,输出的结果保留6位小数。
Sample Input
2.0
Sample Output
area = 12.566371 volume = 4.188790
HINT
在math.h中,定义了一个常量M_PI,它就是圆周率。如果你的结果不对,试着包含这个头文件并使用常量M_PI代替你程序中的圆周率。

使用math.h中M_PI的程序在OJ上无法编译通过,请自行定义M_PI为3.14159265358979323846,或者用三角函数计算M_PI的值,如:4atan(1.0),-2asin(-1)。

#答案
#define M_PI 3.14159265358979323846
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()
{
double R,area,volume;
scanf("%lf",&R);
volume=M_PIRRR/6;
area=M_PI
R*R;
printf("area = %.6lf\n",area);
printf("volume = %.6lf\n",volume);

return 0;
}

求大佬解答


#define M_PI 3.14159265358979323846
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()
{
double D,R,area,volume;
scanf("%lf",&D);
R=D/2.0;
volume=4.0/3.0*M_PI*R*R*R;
area=M_PI*D*D;
printf("area = %.6lf",area);
printf(" volume = %.6lf\n",volume);

return 0;
}