1

列を div に自動的に追加するアプリケーションを作成しています。(Div 内の Div)。この問題は、6 などの奇数のボールの列幅で発生します。6 は 100% に均等に分割できないため、私の解決策は、小数点以下の残りを見つけて最後の列に追加することでした。

何らかの理由で、残りを計算すると、.4 ではなく 0.3999999999999915 になります。

ここに私のjQueryがあります

var numCol = $('.column').length,
        colWid = Math.floor((100 / numCol) * 10) / 10,
        numRem = 100 - (colWid * numCol);

    $('.column').width(colWid + '%');
    $('.column:last-child').width(colWid + numRem + "%");

    alert(numRem);

Math.round を使用する必要がありますか? これが後で何らかの問題を引き起こす可能性があることを心配しています。


で解決

var numCol = $('.column').length,
        colWid = Math.floor((100 / numCol) * 1000) / 1000,
        numRem = (100 - (colWid * numCol)).toFixed(3);

    $('.column').width(colWid + '%');
    $('.column:last-child').width(Number(numRem)+ colWid +'%');
4

2 に答える 2

2

エラーではありません。これは、浮動小数点がどのように設計されているかです。number.toFixed() を使用して float を文字列に変換できます

toFixed は、パラメーターとして桁数を受け入れます。

于 2013-09-03T04:38:55.653 に答える
0

計算全体に Math.floor 関数を適用します。numCol は整数であるか、整数に変換する必要があります。

colWid = Math.floor(((100 / numCol) * 10) / 10)

それ以外の

colWid = Math.floor((100 / numCol) * 10) / 10
于 2013-09-03T04:56:04.783 に答える