Javascript:Math.floor没有按预期工作

时间:2013-06-30 14:29:05

标签: javascript

function TimeConvert(num) {
    for (i = 0; i < num; i+= 60) {
        if (num % 60 < 60) {
            var hours = Math.floor(i / 60);
            if (hours == 0) {
                var minutes = num % 60;
            } else {
                minutes = num % (60 * hours);
            }
        }
    }
    return hours + ":" + minutes;
}

当我致电TimeConvert(60)时,它会返回0:0而不是1:0 ...为什么?在这种情况下,是否必须添加条件以检查是否num % 60 == 0

2 个答案:

答案 0 :(得分:5)

为什么需要迭代?

function TimeConvert(num) {
    var hours   = Math.floor( num / 60 );
    var minutes = num % 60;
    //minutes = minutes < 10 ? '0'+minutes:minutes
    return hours + ":" + minutes;
}

FIDDLE

答案 1 :(得分:3)

问题在于i < num,而应该是i <= num。 您的for仅在i=0时执行一次,因为在下一步i获得+60且i < num变为false。

而且,无论如何,整个功能应该是:

function TimeConvert(num) {
    var hours = Math.floor(num / 60);
    var minutes = num % 60;
    return hours + ":" + minutes;
}