이 함수를 만들었으므로 바이트 양을 올바른 이진 단위로 조정합니다. 내가 겪고있는 문제는 파일이 1000과 1024 바이트 사이에있을 때마다 다음과 같이 나타납니다 : 1.02e+3 KB
. 내가 틀린 일을하고 있습니까? 아니면 모든 예외를 포기하는 것을 잊었습니까? 도와 주셔서 감사합니다.자바 스크립트 파일 크기가 1000에서 1024 사이의 바이트가있는 글리치
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>';
문제를 재현 할 수 없습니다. 이거 어디서 뛰고 있니? – evolutionxbox
위와 같으며 1024 대신 1024를 사용해야한다고 생각합니다.이 내용을 읽으십시오 ... https://en.wikipedia.org/wiki/Binary_prefix – Archer
그건'toPrecision'이하는 것입니다 ... –