如何在Java中使用小数创建方程式?

时间:2018-10-04 19:44:53

标签: 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%

1 个答案:

答案 0 :(得分:2)

问题是类型使用不正确。 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这就是你得到的。