这就是我所做的,但不管我一直无限:
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
我做错了什么?
答案 0 :(得分:8)
问题是你做了
double cot = 1 / Math.tan(0);
这会使cot
成为Infinity
。
你想要:
double cot = 1 / Math.tan(Math.PI / numSides);
return .5 * sideLength * cot;
或者,在一行中:
return .5 * sideLength / Math.tan(Math.PI / numSides);
答案 1 :(得分:1)
tan(0)
为0,所以此行
double cot = 1 / Math.tan(0);
将cot
设置为Infinity
。正如你所看到的,它下面的计算也将评估为无穷大。
由于您似乎正在尝试评估cot(pi/n)
,因此您需要1 / Math.tan(Math.PI / n)
而不是cot * (Math.PI / numSides)
使用cot
的值不正确。