首页 > 解决方案 > 如何在Java中创建一个带小数的方程?

问题描述

当我输入整数时,它会出现我想要的数字。一旦我输入一个带小数的数字,它就会偏离几个 %。

double theory = (((testMark*10)+(midMark*5)+(finalMark*2.5))/3);
double practical = (((labMark*10)+(assignMark*5))/2);
double finalAvg = ((practical+theory)/2);

System.out.println("\nTheory: "+df.format(theory)+"%");
System.out.println("\nPractical: "+df.format(practical)+"%");
System.out.println("\nFinal: "+df.format(finalAvg)+"%");

我想一起计算所有成绩,但有些成绩超出了 10、20、40 等。这就是为什么我乘以100。

谢谢。

编辑:

输入示例和答案:

输入您的实验室分数(满分 10 分):7.5

输入您的测验/测试分数(满分 10 分):5

在 20:18 中输入您的作业标记

输入您的期中分数(满分 20:15)

输入您的期末考试分数(满分 40:32)

理论成绩:74.29%

实用等级:85%

最终成绩:77.5%

我的程序输出:

理论:68.33%

实用:82.5%

最终:75.42%

标签: java

解决方案


问题是类型的不正确使用。java int/int 仍然会给你一个 int。在这种情况下 1 / 2 = 0... 但 1 / 2.0 = 0.5。这是因为其中一个操作数是双精度数,所以另一个数字也被强制转换并返回双精度数。

double theory = (((testMark*10)+(midMark*5)+(finalMark*2.5))/3.0);
double practical = (((labMark*10)+(assignMark*5))/2.0);
double finalAvg = ((practical+theory)/2.0);

你确定你使用的公式是正确的吗?该示例是否也使用相同的公式?

如果您插入数字并将其输入计算器 (((5.0*10.0)+(15.0*5.0)+(32.0*2.5))/3) = 68.33333,这就是您得到的。


推荐阅读