J'ai essayé de nombreux calculs différents pour essayer de faire fonctionner ma méthode de volume sphérique.La méthode du volume sphérique ne fonctionne pas
Ma classe Sphère est étendue de Cercle, pour obtenir la zone du cercle, ainsi que implémente mon interface Shape3D qui me permet d'utiliser ma méthode de volume.
Cependant, j'ai essayé toutes ces différentes formules pour ma méthode et rien ne me donne un volume précis d'une sphère. Il est toujours radicalement éteint.
Celui qui obtient le plus proche est (4 * 22 * rayon * rayon * rayon)/(3 * 7); mais c'est toujours éteint.
//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);
Je vais joindre mon code pour ma forme de classe abstraite, ma classe Circle, et ma classe Sphere, ainsi que mon interface Shape3D. Peut-être que j'ai oublié quelque chose d'évident. Quand je définis le rayon et le ramène, le rayon redevient normal. Donc, je ne suis pas sûr de savoir pourquoi chacun d'entre eux si complètement désactivé.
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/3' en Java est pas ce que vous pensez qu'il est. – jsheeran
Cette question contient actuellement beaucoup de "extra" code qui semble superflu pour le problème réel. Il est plus difficile de parcourir et de trouver le problème. Pouvez-vous travailler pour trouver un exemple _minimal_ qui illustre l'échec? S'il s'agit d'une erreur arithmétique, il devrait être possible de le reproduire avec seulement quelques lignes d'une fonction 'main'. (Il se pourrait même qu'en trouvant cet exemple minimal, vous trouviez le bug!) – yshavit
@jsheeran belle prise! C'est une dupe de "[Pourquoi est le résultat de 1/3 == 0?] (Https://stackoverflow.com/questions/4685450/why-is-the-result-of-1-3-0)" (bien que je ne puisse pas voter pour fermer comme dupe en ce moment). – yshavit