我一直在使用以下功能,以字节显示文件大小,在用户界面上以更易读、更友好的方式显示。
function bytesToSize(bytes, precision)
{
var kilobyte = 1024;
var megabyte = kilobyte * 1024;
var gigabyte = megabyte * 1024;
var terabyte = gigabyte * 1024;
if ((bytes >= 0) && (bytes < kilobyte)) {
return bytes + ' B';
} else if ((bytes >= kilobyte) && (bytes < megabyte)) {
return (bytes / kilobyte).toFixed(precision) + ' KB';
} else if ((bytes >= megabyte) && (bytes < gigabyte)) {
return (bytes / megabyte).toFixed(precision) + ' MB';
} else if ((bytes >= gigabyte) && (bytes < terabyte)) {
return (bytes / gigabyte).toFixed(precision) + ' GB';
} else if (bytes >= terabyte) {
return (bytes / terabyte).toFixed(precision) + ' TB';
} else {
return bytes + ' B';
}
}但是问题是,它显示了X KB,X MP ..etc (舍入要在UI上显示的结果),而不能显示X.Y或说X,Y。在这件事发生后,我更加困惑,我开始环顾系统,看看它们是如何在UI上显示出来的。下面是其中一些,
uploading)
现在,所有这些都给我带来了新的困惑,因为使用上述函数在UI上显示的大小实际上并不准确--想象一下在GB中的文件大小--它不正确地显示给用户。
请知道这些数据应以何种格式显示给用户,以便同时更有用、更准确。此外,在今天复杂的网页中,房地产也是昂贵的,这也需要考虑。
发布于 2011-02-08 14:08:24
为了进行快速的概述,我喜欢文件大小格式xxx.x fooB,其中foo是T, G, M, k (或空的)最适用的格式。
也就是说,将numBytes除以1024,直到使用浮点算法的< 1000为止。记住你分裂的频率,把它转换成foo。
当然,为了获得详细的文件大小信息,您可能需要考虑其他格式。
https://stackoverflow.com/questions/4933904
复制相似问题