Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
don';不能从我的C代码中得到正确的球体体积吗?_C - Fatal编程技术网

don';不能从我的C代码中得到正确的球体体积吗?

don';不能从我的C代码中得到正确的球体体积吗?,c,C,我刚刚开始学习c语言编程。我有一个问题 我想从半径计算球体的体积。我的代码是: 但它并没有给我1523的正确答案。结果是14797486080.000 但是正确的ans将是14797486501.627。问题出在哪里 我在这里发现了问题如果你想在结果中获得更高的精度,请尝试使用double而不是float。32位浮点将使您获得大约7位的精度。一个64位的双精度将提供大约15位的精度。您的计算是在double中执行的,并在赋值时转换为float,因此您失去了精度。您可能应该将q声明为double

我刚刚开始学习c语言编程。我有一个问题

我想从半径计算球体的体积。我的代码是:

但它并没有给我1523的正确答案。结果是14797486080.000 但是正确的ans将是14797486501.627。问题出在哪里


我在这里发现了问题

如果你想在结果中获得更高的精度,请尝试使用double而不是float。32位浮点将使您获得大约7位的精度。一个64位的双精度将提供大约15位的精度。

您的计算是在
double
中执行的,并在赋值时转换为
float
,因此您失去了精度。您可能应该将
q
声明为
double


另外,如果你真的关心精度,你应该使用更好的π近似值。

你也许应该把q声明为double。您应该使用π的更好近似值。

尝试使用以下方法:

#include <stdio.h>
#include <math.h>

int main()
{
    int a;
    double volume;
    printf("Enter the radius of a sphere: ");
    scanf("%d", &a);
    volume=(4.0/3) *3.14159*pow(a,3);
    printf("Volume of a sphere is: %3f", volume);
    return 0;
}
#包括
#包括
int main()
{
INTA;
双卷;
printf(“输入球体的半径:”);
scanf(“%d”和“&a”);
体积=(4.0/3)*3.14159*功率(a,3);
printf(“球体的体积为:%3f”,体积);
返回0;
}

请不要发布图像。通过复制粘贴直接发布代码,然后使用CTRL+K将其格式化为代码。至于答案,请尝试使用
double
而不是
float
。问题可能是float精度。你需要看一本C编程的书或教程。关于技术说明:。如果使用%f而不是int和%dNo将半径读取为浮点值,这不是更有意义吗。我们在这里看到的所有计算都是在
double
中执行的。计算是在double中执行的,但printf中生成的变量q的表示形式仅表示具有32位精度的浮点。对于“期望结果”,pi的近似值为3.14159。使用更好的pi,结果将为14797499000.5。由于这是某种练习,其作者追求结果的可重复性,而不是精确性。