0

そのため、私は10の異なるフィールドからの入力を受け取るスクリプトの作成に取り組んでおり、ドロップダウンのいずれかが変更されると、それに応じてpopScoreとpopLevelが更新されます。小数点以下10桁程度の数値が生成されるという小さな問題が発生したため、2に丸める必要がありました。javascriptはInternetExplorerを除くすべてのブラウザーで機能します。Internet Explorerで失敗する原因は何ですか?

以下に、スペースを節約するためにドロップダウンの1つだけのJavaScriptを含めましたが、それらの違いは、popScoreの値とドロップダウン内のアイテムの数です。popLevelは5までしか上げることができません。

それが機能しない理由を理解するための助けは大歓迎です。ありがとう。

 <script type="text/javascript">
 $(document).ready(function(){
  //global variables
  var popLevel = 0;
  var popScore = 0.00;
  var q1=0;
  var q2=0;
  var q3=0;
  var q4=0;
  var q5=0;
  var q6=0;
  var q7=0;
  var q8=0;
  var q9=0;
  var q10=0;
$('.selectionbox1').change(function() {
    if(q1 != 0){
        if(q1 == 1){
        popScore = popScore - 0.13;
        }
        else if(q1 == 2){
        popScore = popScore - 0.25;
        }
        else if(q1 == 3){
        popScore = popScore - 0.38;
        }
        else if(q1 == 4){
        popScore = popScore - 0.50;
        }
        else if(q1 == 5){
        popScore = popScore - 0.63;
        }
    }
    var b = document.getElementById("q1").value;
    if(b == 1){
        popScore = popScore + 0.13;
    }
    else if(b == 2){
        popScore = popScore + 0.25;
        }
    else if(b == 3){
        popScore = popScore + 0.38;
    }
    else if(b == 4){
        popScore = popScore + 0.50;
        }
    else if(b == 5){
        popScore = popScore + 0.63;
    }

    if(popScore > 4.00){
    popLevel=5;
    }
    else if(popScore > 3.00){
    popLevel=4;
    }
    else if(popScore > 2.00){
    popLevel=3;
    }
    else if(popScore > 1.00){
    popLevel=2;
    }
    else if(popScore > 0.00){
    popLevel=1;
    }

    //record the current value of the field changed
    var e = document.getElementById("q1");
    q1=e.options[e.selectedIndex].value;

    //round to 2 decimal places for score
    popScore = parseFloat(popScore.toFixed(2));

    //update the fields for pop score and pop level
    var txt = document.getElementById("popLevel");
    txt.innerHTML=popLevel;
    var txt2 = document.getElementById("popScore");
    txt2.innerHTML=popScore;
});
4

1 に答える 1

0

浮動小数点数は正確ではありません。表示のために、常に丸める必要があります。2.48+1.49JSコンソールにChromeで入力すると、が表示されます3.9699999999999998。これは、最も広く使用されている浮動小数点形式であるhttp://en.wikipedia.org/wiki/IEEE_754を使用するすべての言語に当てはまります。

問題の適切な説明は次のとおりです。http://docs.python.org/tutorial/floatingpoint.html Python用ですが、前述のように、ほとんどの言語は同じ形式を使用します。

于 2012-07-30T17:27:56.627 に答える