【发布时间】:2018-06-16 17:06:17
【问题描述】:
所以在我正在做的项目中,我有一个以原点为中心的圆,我需要通过它切割一条垂直线。我正在尝试计算圆的较小比例的面积;我的输入是半径和左右手的比例。现在我只是想确保它正确地进行我的计算,并且它正在正确地计算比率,但它根本不计算比率区域。请帮忙
int main(){
float radius, left, right, total;
float ratio;
float ratioArea = ratio*pi*pow(radius, 2);
scanf("%d%d%d", &radius, &left, &right);
if(left == right)
{
printf("left and right are equal");
}
// do area calculations with righthand side
else if(left > right)
{
ratio = right / (right+left);
ratioArea = ratio * pi * pow(radius, 2);
printf("ratio= %.6f, area = %f\n", ratio, ratioArea);
}
// do area calculations with lefthand side
else if(left < right)
{
ratio = left / (left + right);
ratioArea = ratio*pi*pow(radius, 2);
printf("ratio = %.6f, area = %f\n", ratio, ratioArea);
}
return 0;
}
【问题讨论】:
-
在
scanf中,%d格式适用于int,但您使用的是float,它应该有%f。 -
启用所有编译器警告并节省时间。
scanf("%d%d%d", &radius, &left, &right);将使用启用良好的编译器发出警告。 -
旁白:使用
pow对数字求平方是低效的——最好使用radius * radius。 -
@WeatherVane 请注意,
pow(some_float,2)将产生double精度计算,而some_float*some_float仍然是float。即使将pow(some_double, 2)与some_double*some_double进行比较,也可以使用优化编译器生成相同的代码。你的想法还是很谨慎的。
标签: c syntax decimal formula calculation