Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.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
C程序自动循环_C_Rounding - Fatal编程技术网

C程序自动循环

C程序自动循环,c,rounding,C,Rounding,编辑:问题已经解决了,不过我现在会尽量弄清楚 当我编写一个计算圆面积的程序时,我将“3.1415926535”指定给一个常量浮点Pi。当我在程序中使用areaCircle=Pi*radius*radius时,其中radius是一个整数,areaCircle是一个浮点数,程序打印出类似“7.000000”的内容。我原以为它会返回“7.123456”之类的小数点 编辑:这是代码,如果你们需要: int radius float circumference,areaCircle; const int

编辑:问题已经解决了,不过我现在会尽量弄清楚

当我编写一个计算圆面积的程序时,我将“3.1415926535”指定给一个常量浮点Pi。当我在程序中使用areaCircle=Pi*radius*radius时,其中radius是一个整数,areaCircle是一个浮点数,程序打印出类似“7.000000”的内容。我原以为它会返回“7.123456”之类的小数点

编辑:这是代码,如果你们需要:

int radius
float circumference,areaCircle;
const int PI = 3.14159265358979323846264338327;
printf("Enter the radius of the circle: \n");
scanf("%d",&radius);
circumference = PI*2*radius;
areaCircle = PI*radius*radius;
printf("The circumference of a circle with radius %d is %f and its area is %f\n",radius,circumference,areaCircle);

在您发布的代码中,您已将
PI
声明为
int
。尝试:

const float PI = 3.14159265358979323846264338327;
如果你把你的问题说得更清楚,那就太好了

虽然我有一些建议

  • 您的程序将
    areaCircle值显示为浮动数据
    ,因为areaCircle是浮动的。它也在计算一个浮点数

  • 逻辑上
    -半径
    不能是整数类型

  • 您可以将
    所有数据类型设置为float/double

  • 也可以使用此into语句 小数点后的控制数字
    %.2f
    %.0f
    或您需要的任何值


好的,那么问题出在哪里?问题是什么?那太糟糕了。如果您想让我们告诉您为什么会发生这种情况,您需要提供编译和执行的代码。欢迎使用堆栈溢出!你介意创建一个?
const int PI=3.14159265358979323846264338327
这里PI是
int
但是
3.14159265358979323846264338327
是一个
double
现在,请将所有变量声明为
double
。无
float
,无
int
。(您需要调整printf和scanf格式以匹配。)一般来说,您可能更喜欢
double
而不是
float
(我知道Daniel在他们的问题中使用了
float
,所以这也适用于那里),因为它们提供了更高的精度,在大多数现代浮点单位上,它们在时间上也非常便宜,虽然它们占用更多的空间,但对于大多数应用程序来说,空间不是问题。@Muzer:大多数浮点实现,即使是在现代CPU上,也不支持双精度,或者必须使用(可能是部分的)软件模拟。这是因为绝大多数CPU都在嵌入式系统中,并有最好的单精度FPU。好吧,点,不认为这可能是一个嵌入式设备的问题。但你关于“最现代…”的说法是错误的。事实上,C主要用于这样的系统或内核编程,而这些系统或内核编程(如Linux)可能也不允许使用FPU。我认为嵌入式系统可能没有FPU,所以我的说法是完全正确的(即使有误导性)。我认为带有FPU的微控制器能够很好地支持双精度。代码中唯一“错误”的变量是
PI
。除了计算面积和周长时可能出现的算术溢出(这可能发生在任何变量类型上),其他一切都可以工作。您可以使用cos(-1)而不是pi:)我想您的意思是
acos(-1)
`ow,,yes:)`