当我输入整数时,它就会显示出我想要的数字。输入带小数的数字后,它就会立即减少%。
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%
答案 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这就是你得到的。