我正在撰写一个小网页,让学生回答问题并获得有关答案的反馈。
此检测的一部分检查常见错误,以便为其提供指导。具体来说,我想检查他们的答案是否是实际答案中的十分之一。
如果答案是3.93E-6,如果输入3.93E2,3.93E-9,3.93等,则应激活此条件。
我测试这个的明显方法是做这样的事情:
var correct = 3.93E-6;
var entry = 3.93E-2; //really comes from an input box.
if (!(entry / correct)%10) {
alert ("power of ten error");
}
但是,这不起作用,因为错误/纠正不适用于大/小数字。
我该如何解决这个问题?
答案 0 :(得分:2)
var num = 12.4123;
var numString = num.toExponential()
// numString = "1.24123e+1"
这会将数字标准化,但您必须手动解析它。 (比如结果必须准确多少......)
答案 1 :(得分:2)
这是一种查看两个数字是否大约10的幂的方法:
var correct = 3.93E-6;
var entry = 3.93E-2;
var epsilon = .01;
var log10_ratio = Math.log(correct/entry)/Math.log(10);
if (Math.abs(Math.round(log10_ratio) - log10_ratio) < epsilon) {
alert ("power of ten error");
}
答案 2 :(得分:1)
如果要求用“E”符号输入答案,为什么不检查“E”之前的所有内容是否与学生答案和正确答案相同。
当然你也可能想让他们知道应该保留多少小数位,否则1.2E5和1.21E7不会触发“十次误差的力量”