javascript filesize函数故障,字节在1000到1024之间

时间:2017-11-15 09:57:08

标签: javascript math filesize

所以我创建了这个函数,它将字节数量调整到正确的二进制单位。我遇到的问题是,只要文件在1000到1024字节之间,它就会显示为:1.02e+3 KB。我做错了什么或者我忘记了所有异常?谢谢你的帮助。

var ce_sizeSuffixes = [" B", " KB", " MB", " GB", " TB"];

function grid_filesizeCellClientTemplate(bytes) {
    if (!bytes)
        return "";

    var e = Math.floor(Math.log(bytes) / Math.log(1024));
    var size = (bytes / Math.pow(1024, Math.floor(e)));
    var unit = ce_sizeSuffixes[e];
    //bug with a size >= 1000 and < 1024
    return '<span title="' + bytes + ' bytes">' + (e === 0 ? size : size.toPrecision(3)) + unit + '</span>';
}

解决方案:

var ce_sizeSuffixes = [" B", " KB", " MB", " GB", " TB"];
function grid_filesizeCellClientTemplate(bytes) {
if (!bytes)
    return "";

var e = Math.floor(Math.log(bytes) / Math.log(1024));
var size = (bytes / Math.round(size * 1000) / 1000));
var unit = ce_sizeSuffixes[e];
//bug with a size >= 1000 and < 1024
return '<span title="' + bytes + ' bytes">' + (e === 0 ? size : size.toPrecision(3)) + unit + '</span>';

1 个答案:

答案 0 :(得分:1)

toPrecision输出格式化为给定有效位数的数字。在您的情况下,101010001024之间的任意数字都有4位有效数字,但您告诉代码给出3.因此,1.01e+3

如果您想将数字四舍五入到小数点后3位,请考虑使用Math.round(size*1000)/1000