Javascript JS中的浮点数

Javascript JS中的浮点数,javascript,floating-point,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)

我正在写一个小网页,让学生能够回答问题,并获得他们答案的反馈

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

如果答案是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");
}
但是,这不起作用,因为error/correct不适用于大/小数字

我怎样才能解决这个问题


现场代码:

如果要求他们输入带有“E”符号的答案,为什么不检查学生答案和正确答案中“E”之前的所有内容是否相同


当然,你可能还想让他们知道应该保留多少小数位,否则1.2E5和1.21E7不会触发“十次方错误”

如果要求他们用“E”符号输入答案,为什么不检查两个学生答案中“E”之前的所有内容是否相同,和正确的答案

当然,您可能还想告诉他们应该保留多少小数位,否则1.2E5和1.21E7不会触发“十次方误差”

这会使数字正常化,但您必须手动解析它。(比如结果的准确度…)


这会使数字正常化,但您必须手动解析它。(比如结果的准确度…

这里有一种方法可以查看两个数字是否相差大约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");
}
var correct=3.93E-6;
风险值分录=3.93E-2;
varε=0.01;
var log10_比率=数学日志(正确/输入)/数学日志(10);
if(数学绝对值(数学四舍五入(对数10_比率)-对数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");
}
var correct=3.93E-6;
风险值分录=3.93E-2;
varε=0.01;
var log10_比率=数学日志(正确/输入)/数学日志(10);
if(数学绝对值(数学四舍五入(对数10_比率)-对数10_比率)
测试的一部分是正确获取小数位数-还有另一个条件触发了它。测试的一部分是正确获取小数位数-还有另一个条件触发了它。最后,我做了两件事:correct.toExponential().toString().split('e');我将每个数字转换为exp,然后转换为字符串并拆分,然后比较结果数组的第一个元素。谢谢最后我两个都做了:correct.toExponential().toString().split('e');我将每个数字转换为exp,然后转换为字符串并拆分,然后比较结果数组的第一个元素。谢谢你的意思是不是说=epsilon?@Christoph:不,目的是通知学生他们的输入是否与正确答案相差10次方。如果不是,那就不是“十次方错误”你的意思是不是
=
epsilon?@Christoph:不,目的是通知学生他们的输入是否与正确答案相差10次方。如果不是,那就不是“十次方误差”