JS中的浮点数

时间:2009-02-13 09:57:49

标签: javascript floating-point

我正在撰写一个小网页,让学生回答问题并获得有关答案的反馈。

此检测的一部分检查常见错误,以便为其提供指导。具体来说,我想检查他们的答案是否是实际答案中的十分之一。

如果答案是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");
}

但是,这不起作用,因为错误/纠正不适用于大/小数字。

我该如何解决这个问题?

现场代码:http://bradshawenterprises.com/test.html

3 个答案:

答案 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不会触发“十次误差的力量”