【发布时间】:2020-02-08 16:45:19
【问题描述】:
概述
使用 DrJava,我根据外星人入侵计算了“估计受损的玉米植物”,该入侵留下了麦田圈 x 直径(以英尺为单位)(用户输入)。我做了一个计算来确定一英亩是 43560 英尺等于 1 英亩。每毁坏一英亩,就会毁坏 30000 株玉米。
我要求澄清为什么我的程序得到的答案与我的计算器略有不同的输出是“估计玉米植物受损”。
当用户输入 80 时我的 Java 程序的输出
估计受损的玉米植株:3462
我的计算器和谷歌最终计算出的直径相同
估计受损的玉米植株:3450
我的措辞解决方案
我得到了不同的输出,因为 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 位?
- 因为我希望输出与正在进行的计算相匹配。
【问题讨论】:
-
将
Math.PI用于 pi -
如果我在计算器中输入这个,我得到 3461.8... 所以你的程序输出正确的值。为什么要引入舍入误差?当你说谷歌输出不同的结果时,你到底是什么意思?在搜索字段中使用计算器还是在哪里?
-
你真的想让你的程序以一个错误的方式兼容一些不太正确的东西吗?
-
@NomadMaker 你是对的,但与此同时,我仍然想知道我的问题的答案。这是为了练习和信息目的而不是准确性。我发布了一个关于你要说的答案,但我仍然想要一个编码的答案。
-
您可以编写一个类似于 BigDecimal 的类,但我强烈建议您找些有成效的事情去做。
标签: java calculation decimalformat