无法比较jquery中的两个浮点数

时间:2015-08-21 11:36:28

标签: javascript jquery

我的代码是:

function checking(data,ans,no){

    var results = data.split(','),i;
    ans = parseFloat(Math.round(ans* 100) / 100).toFixed(2);
    alert('correct : ' + results[--no]);
        alert('my ans: ' + ans);
        var correct = parseFloat(results[--no]);
        var givenAns = parseFloat(ans);
        var diff = correct - givenAns;
        alert(diff);
    if(correct == givenAns){
    alert('correct');
      $('#wrong'+ no).hide();
      $('#ok'+ no).show();
      setTimeout(function() { return true; }, 1500);
    }
    else{
    alert('not correct');
      $('#ok'+ no).hide();
      $('#wrong'+ no).show();
      var temp = no+1;
      $('#notSolveBtn'+ temp).show();
      return false;
    }

}

function check_ans(ans,no){
    $.get('AnswerSheet/1.txt', function(data) {
          checking(data,ans,no)
    }, 'text');
}

问题:

alert('correct : ' + results[--no]);
            alert('my ans: ' + ans); 

这两行警报 正确:115.38 我的回答:115.38 但是ans ==结果[ - no]总是返回false。如果存在任何类型不匹配问题,我再次将这两个值解析为float类型。还是同样的问题。要确认我从另一个减去:

 var diff = correct - givenAns;
            alert(diff);

但是alert(diff);警告NAN应该警告0.00或0.我做错了什么。对不起,如果已经问过这个问题我google了很多时间,但没有运气。

1 个答案:

答案 0 :(得分:1)

第一个问题是你只解析ans而不是结果,所以在这里添加

resultFloat = parseFloat(result[no]).toFixed(2);

其次,如果你不是100%肯定你在做什么,我就不会使用--no。在您的代码中,您比较了两个不同的东西,在第一个alert中,您有一个不同的数组条目而不是分开的var correct = ...。因此,最好只在一点定义新的no,并将该值用于以下用途

function checking(data,ans,no){

    var results = data.split(','),i;
    no--;
    resultFloat = parseFloat(result[no]).toFixed(2);
    ans = parseFloat(Math.round(ans* 100) / 100).toFixed(2);
    alert('correct : ' + resultFloat); // <-- this one and...
        alert('my ans: ' + ans);
        var correct = resultFloat; // <-- ...this one were different before, was that on purpose?
        var givenAns = ans;
        var diff = correct - givenAns;
        alert(diff);
....