Вычисления для объема сферы неверны

#java #math #formula #calculator

#java #математика #формула #калькулятор

Вопрос:

Кажется, я не могу понять, почему вычисление для объема дает мне неправильные числа. При радиусе 4.2 объем должен быть около 310. Я также на 99% уверен, что моя формула также верна.

 package ch3_program2;

import java.util.Scanner;

public class SphereCalculations {

    public static void main(String[] args) {

        double r;
        System.out.println("Welcome to the Sphere Calculator.");
        
        Scanner scan = new Scanner(System.in);
        
        System.out.print("Enter the sphere's radius: ");
        r = scan.nextDouble();
        System.out.println();
        
        System.out.println("The Results are:");
        System.out.println("Radius: "   r);
        System.out.println("Volume: "   4/3 * Math.PI * Math.pow(r, 3));
        System.out.println("Surface area: "   4 * Math.PI * Math.pow(r, 2));
        
        scan.close();
    }

}
 

Результат, который я получаю:
Добро пожаловать в калькулятор сфер.
Введите радиус сферы: 4.2

Результаты таковы:
Радиус: 4.2
Объем:
232.75431651916062 Площадь поверхности: 221.6707776372958

Ответ №1:

Ваша проблема — целочисленная арифметика: 4/3 есть 1 .

Измените 4/3 на 4D/3 или поменяйте Math.PI * 4/3 местами, чтобы принудительно double выполнить арифметику.