2

私のスクリプトは製品の重量を計算します。フルボックスの重量は 25.2kg です。各アイテムの重さは4.2kgで、6つのアイテムがフルボックスになっています。

ボックスの場合、Javascriptでチェックしています。

   alert(jsonData.total_weight  + ' % ' +  fullpackweight + ' = ' + jsonData.total_weight % fullpackweight);
if(jsonData.total_weight % fullpackweight == 0) {
    $('#fill_status').hide();
    $('#fill_status i').html('OK ' + jsonData.total_weight);
} else { 
    $('#fill_status').show();
    $('#fill_status i').html('NOT OK ' + jsonData.total_weight);
}

スクリプトの上部にある警告ボックスには、次の結果が表示されます。

25.2 % 25.2 = 0
50.4 % 25.2 = 0
75.6 % 25.2 = 25.199999999999996 (WHY?)
100.8 % 25.2 = 0
126 % 25.2 = 3.552713678800501e-15 (WHY?)

この振る舞いを説明できる人はいますか?

4

1 に答える 1

1

問題は、モジュロに整数ではなく浮動小数点数を使用していることです。

75.6 % 25.2 = 25.199999999999996

しかし

756 % 252 = 0

そのため、(*10 を使用して) 整数に変換すると、問題が解決します。

これをチェックして

25.199999999999999 - 25.2

それはあなたに0を与えるでしょう:D

于 2013-05-23T09:21:13.263 に答える