我嘗試了許多不同的計算方法來試圖讓我的球體積法工作。球體體積法不起作用
我的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