尝试计算MCQ中的学生成绩。 30 q,4个标记为正确,-1为不正确。
当我没有放入/ 120部分时,下面的代码有效。对于具有16个正确答案和7个错误答案的记录,它返回值57,这是我想要的。但是当我试图将它除以120来得到一个百分比值时,它会返回63.94,有人可以解释这是怎么发生的或为什么会发生这种情况?
如果需要,我可以上传更多代码。
没有“/ 120”
(Math.Round(((CDbl(objAssessment1.Item("Correct")) * 4) - (CDbl(objAssessment1.Item("Wrong")))), 2))
使用“/ 120”
(Math.Round(((CDbl(objAssessment1.Item("Correct")) * 4) - (CDbl(objAssessment1.Item("Wrong"))) / 120), 2))
答案 0 :(得分:0)
加法/减法前的乘法/除法
如果我们输入实际值,您得到的是:16 * 4 - 7 / 120
您真正想要的是:(16 * 4 - 7) / 120
答案 1 :(得分:0)
(Math.Round(((CDbl(objAssessment1.Item("Correct")) * 4) - (CDbl(objAssessment1.Item("Wrong"))) / 120), 2))
(Math.Round(((CDbl(16) * 4) - (CDbl(7)) / 120), 2))
(Math.Round(((16 * 4) - (7) / 120), 2))
(Math.Round(((16 * 4) - (7) / 120), 2))
(Math.Round(((64) - (7) / 120), 2))
括号中的64和7只是评估自己。
(Math.Round((64 - 7 / 120), 2))
现在记住代数的优先顺序 - 首先是乘法和除法。
(Math.Round((64 - 0.0583333333333333), 2))
现在减法。
(Math.Round(63.94166666666667, 2))
现在是Math.Round
(63.94)
删除额外的括号63.94会自行计算
63.94
整个问题是括号过多而你错过了在分组之前执行减法的设置。 jmcilhinney在评论中的建议将是理顺这一点的最好方法。这确实不是编程问题,而是算术问题。 : - )