1

这就是我所做的,但无论我不断获得无穷大:

 public double calcr(){
  double cot = 1 / Math.tan(0);
  return  .5 * sideLength * cot * (Math.PI / numSides);
}

主要的:

RegularPolygon poly = new RegularPolygon(4, 10);   
System.out.println(poly.calcr());

输出:

Inifinity 

我究竟做错了什么?

4

2 回答 2

8

问题是你这样做

double cot = 1 / Math.tan(0);

这将cotInfinity

你会想要:

double cot = 1 / Math.tan(Math.PI / numSides);
return .5 * sideLength * cot;

或者,在一行中:

return .5 * sideLength / Math.tan(Math.PI / numSides);
于 2013-10-10T00:37:47.927 回答
1

tan(0)为 0,所以这条线

double cot = 1 / Math.tan(0);

设置cotInfinity。如您所见,它下面的计算也将评估为 Infinity。

由于看起来您正在尝试评估cot(pi/n),因此您需要1 / Math.tan(Math.PI / n)而不是使用cot * (Math.PI / numSides)不正确的值 for cot

于 2013-10-10T00:37:23.813 回答