【发布时间】:2012-05-12 07:36:43
【问题描述】:
我正在使用此函数将文件大小(以字节为单位)转换为人类可读的文件大小:
function getReadableFileSizeString(fileSizeInBytes) {
var i = -1;
var byteUnits = [' kB', ' MB', ' GB', ' TB', 'PB', 'EB', 'ZB', 'YB'];
do {
fileSizeInBytes = fileSizeInBytes / 1024;
i++;
} while (fileSizeInBytes > 1024);
return Math.max(fileSizeInBytes, 0.1).toFixed(1) + byteUnits[i];
};
但是,这似乎不是 100% 准确的。例如:
getReadableFileSizeString(1551859712); // output is "1.4 GB"
这不应该是"1.5 GB"吗?似乎除以 1024 正在失去精度。我完全误解了某事还是有更好的方法来做到这一点?
【问题讨论】:
-
getReadableFileSizeString(0);返回 0.1kb ;p
-
为什么要1.5?
1.445281982421875正确舍入为 1.4。 -
1551859712/(1024^3)=1.445281982421875 这是正确的!
-
我喜欢你添加了
YB。值得怀疑的是,任何人都会为他的 DB 获得 1 YB。它将花费100 trillion dollars! -
@guyarad - 有一张 50 年前的 5MB 硬盘驱动器的著名图片(房间大小,重约一吨)。我敢肯定,那时他们甚至没有梦想过 GB 和 TB,看看我们今天所处的位置......永远不要说永远;-)
标签: javascript filesize human-readable