1

我正在编写一个自动将列添加到 div 中的应用程序。(Div 内的 Div)。问题来自奇数的球列宽度,例如 6。6 不能平均分为 100%,所以我的解决方案是找到小数点后的余数并将其添加到最后一列。

出于某种原因,当我计算余数时,它是 0.3999999999999915 而不是 0.4

这是我的 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() 将浮点数转换为字符串

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 回答