Обзор
Используя Dr Java, я вычислил "Оцененные поврежденные растения кукурузы" на основе инопланетного вторжения, которое оставило круг на полях x диаметр в футах (пользовательский ввод ). Я сделал расчет, чтобы определить, что акр равен 43560 футам 1 акру. На каждый уничтоженный акр уничтожается 30000 растений кукурузы.
Вывод, который я прошу уточнить, почему моя программа получает немного другой ответ, чем мой калькулятор, - «Предполагаемое повреждение растений кукурузы».
Мой вывод из моей Java программы, когда пользователь вводит 80
Оценка поврежденных растений кукурузы: 3462
Мой калькулятор и Окончательный расчет Google того же диаметра
Предполагаемые поврежденные растения кукурузы: 3450
My Worded Solution
I получаю другой вывод, потому что переменная dAcres отформатирована для округления до 3 десятичных знаков для вывода, но значение, которое она использует для расчета, не округляется. Например, когда пользователь вводит 80 в качестве диаметра, переменная dAcres выводит 0,115. Однако вместо этого переменная dAcre в своих вычислениях использует .11539.
Окончательный вопрос
Как мне сделать так, чтобы в моем расчете использовалось только 3 знака после запятой вместо значения по умолчанию количество знаков после запятой? Пример: 0,115 вместо 0,11539?
Мой код
import java.util.*;
import java.text.*;
public class Lab2_Problem2
{
public static final double dPI = 3.14159;
public static void main(String[] args )
{
// DECLARATIONS
// Input-capture variables
double dDiameter;
// Expression-result variables
double dArea;
double dAcres;
double dCornPlantsDamaged;
// Other variables
double dRadius;
double dRadiusSquared;
// Instantiations
Scanner cin = new Scanner(System.in);
DecimalFormat dfDiameter = new DecimalFormat("#######");
DecimalFormat dfArea = new DecimalFormat("#######.00");
DecimalFormat dfAcres = new DecimalFormat("##0.000");
DecimalFormat dfCornPlantsDamaged = new DecimalFormat("#####");
// INITIALIZE
// INPUT
System.out.print("Enter crop circle diameter in feet: ");
dDiameter = cin.nextDouble();
// PROCESSING AND CALCULATIONS
dRadius = dDiameter / (double) 2;
dRadiusSquared = dRadius * dRadius;
dArea = dPI * dRadiusSquared;
dAcres = dArea / (double) 43560;
dCornPlantsDamaged = dAcres * (double) 30000;
// OUTPUT
System.out.println("Crop circle diameter: " + dfDiameter.format(dDiameter) + " feet");
System.out.println("Square feet: " + dfArea.format(dArea));
System.out.println("Acres: " + dfAcres.format(dAcres));
System.out.println("Estimated corn plants damaged: " +
dfCornPlantsDamaged.format(dCornPlantsDamaged));
}
}
Вопросы и ответы
- Почему вы хотите рассчитать на 3 знака после запятой, если ваш калькулятор не будет делать это?
- Поскольку я хотел бы, чтобы выходные данные соответствовали выполняемым расчетам.