我尝试了许多不同的计算方法来试图让我的球体积法工作。球体体积法不起作用
我的Sphere类是从Circle扩展的,以便从圆圈中获取区域,并实现了我的Shape3D接口,该接口允许使用我的体积方法。
但是,我已经尝试了所有这些不同的公式用于我的方法,并且没有任何东西可以给我一个精确的球体体积。它总是彻底关闭。 (4 * 22 *半径*半径*半径)/(3 * 7);(3 * 6 *)*但它仍然关闭。
//return (4/3) * super.area() * radius;
//return (Double)((4*22*getRadius()*getRadius()*getRadius())/(3*7));
//return (4*22*radius * radius * radius)/(3*7);
//return ((4/3) * (Math.pow(getRadius(), 3))/(Math.PI));
//return (getRadius() * getRadius() * getRadius()) * (Math.PI) * (4/3);
//return (super.area() * getRadius()) * (4/3);
我将为我的Shape抽象类,我的Circle类和我的Sphere类以及我的Shape3D接口附加我的代码。
也许我忽略了一些明显的东西。当我设置半径并得到它时,半径恢复正常。所以我不确定为什么每一个这些如果完全关闭。
public class Main {
public static void main(String[] args) {
System.out.println(volume());
}
public static double volume() {
double vol;
double x = 4/3;
double y = Math.pow(30.0, 3);
double z = Math.PI;
vol = y * z * x;
return vol;
//return (4/3) * super.area() * radius;
//return (Double)((4*22*getRadius()*getRadius()*getRadius())/(3*7));
//return (4*22*radius * radius * radius)/(3*7);
//return ((4/3) * (Math.pow(getRadius(), 3))/(Math.PI));
//return (getRadius() * getRadius() * getRadius()) * (Math.PI) * (4/3);
//return (super.area() * getRadius()) * (4/3);
}// end sphere volume
}
'4/Java中3'是不是你认为它是。 – jsheeran
这个问题目前包含了很多“额外”的代码,这对实际问题来说似乎是多余的。它使浏览更难以找到问题。你能想出一个可以说明失败的_minimal_例子吗?如果这是一个算术错误,应该可以通过几行'main'函数重现它。 (甚至可能是因为这个最小的例子,你会发现这个bug!) – yshavit
@jsheeran很好的接收!这是“为什么是1/3 == 0的结果?”(https://stackoverflow.com/questions/4685450/why-is-the-result-of-1-3-0)“ (尽管我现在不能投票结束)。 – yshavit