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