java - 为什么我的答案显示为无穷大?

标签 java double percentage

我对此有点陌生,所以请多多包涵。

我正在创建一个程序,允许用户输入类(class)作业的分数和考试分数,然后计算总成绩。输入的值必须在 1 到 10 之间。类(class)作业占 40%,考试占 60%。必须将值 1-10 转换为百分比,我认为这是发生无穷大错误的地方。

这是我的代码(代码后面会有'if'和'else'语句,但我想我会接受的。同时忽略底部的最终分类):

import javax.swing.JOptionPane;


public class Question3 {

    public static void main(String[] args) {

        String Coursework, Exam;

        Coursework = JOptionPane.showInputDialog("Please enter coursework score out of 10:");
        Exam = JOptionPane.showInputDialog("Please enter exam score out of 10");

        double CourseworkDoub, ExamDoub, CourseworkPerc, ExamPerc, FinalMark;

        CourseworkDoub = Double.parseDouble(Coursework);
        CourseworkPerc = (CourseworkDoub / 0.25);

        ExamDoub = Double.parseDouble(Exam);
        ExamPerc = (ExamDoub / (10 / 60));

        FinalMark = (CourseworkPerc + ExamPerc);

        JOptionPane.showMessageDialog(null, "Final mark: " + FinalMark + "\nFinal classification is a ", "Result", JOptionPane.INFORMATION_MESSAGE);

    }

}

CourseworkPercExamPerc 似乎是问题所在。我希望能够将百分比显示到小数点后两位。例如,类(class)作业 10 分中有 5 分(值(value) 40%)= 20.00%,考试中 10 分中有 5 分(值(value) 60%)= 30.00% 因此总分是 50.00%

希望这是有道理的。感谢您提供的任何建议。谢谢

最佳答案

这是由于这一行的整数除法:

ExamPerc = (ExamDoub / (10 / 60));

1060 是整数,因此 (10/60) 得到一个整数答案 -- 0.

如果其中一个是双重文字,例如10.0(或等同于 10d(double)10),您会得到一个 double 结果 -- 0.166666

示例修复:

ExamPerc = (ExamDoub / (10.0 / 60));

关于java - 为什么我的答案显示为无穷大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26661875/

相关文章:

Java Resultset.get***(...) 通过字符串或 int 更快?

java - 无法从 Tomcat 中的客户端获取 X509 根证书

java - Maven命令行运行打包成jar的TestNG

ruby-on-rails - stub 类上调用的所有方法

javascript - 单击按钮时从输入框中绘制百分比条

java - 将用于Spring Boot应用程序的库放在额外的lib目录中

java - 如何从 Java 中的命令行计算平均数

c# - 为什么这段代码不能证明读/写的非原子性?

mysql - 获取where语句匹配mysql的百分比

css - 百分比宽度 div 之间的像素间距(以列为单位)?