본문 바로가기
자바스크립트

[Javascript] 파일 용량 포멧 코드

by devebucks 2022. 9. 25.
728x90

Math.log()

자연로그의 값을 반환한다. 0이면, -Infinity, 음수면, NaN 반환

Math.log는 입력받은 파라미터가 2.718..(자연상수)의 몇 거듭제곱인지 반환해준다.

 

자연로그

자연로그: ln(x)에서 x에 해당하는 수. 무리수 e를 밑으로 하는 로그 logex를 자연로그라고 lnx로 나타낸다.

자연상수

자연상수: 2.7182... 끝이 없는 무리수.(e), 자연로그 lnx의 밑이다. '오일러의 수'라고 한다. x의 값이 0에 한없이 가까워질 때, 일정한 값에 가까워지며 그 극한값을 e로 나타낸다.

 

로그를 계산하는 방법

log3^9 = 2 

log3^27 = 3

log2^1024 = 10

.

.

.

lnx = loge^x

 

Math.log(980) = ln980 = log2.718...^980 = 6.887552571664617

Math.log(980)을 하면, 반환되는 값은 6.887552571664617이다.

 

980bytes를 포멧화(Byte, KB, MB, GB,...)하면,

ln980 = 6.88...

ln1024 = log2.718^1024 = 6.932

6.88 / 6.932 = 1..... -> 980Bytes

 

Math.log(1)
Math.log(2.5): 0.916...
Math.log(64)
Math.log(4)

Math.log(64)/ Math.log(4)

포멧 코드

/**
 * @description
 * 자료 업로드 파일 사이즈 변환
 * 파일 용량은 숫자가 3자리 넘어가면 단위변환, 반올림
    ex) 100B (O)
    1,000B (X) -> 980B (O)
    123.45KB (X) -> 123KB (O)
    100KB (O)
    1,024KB (X) -> 1MB (O)
 * @param {*} number
 */
export default function fileSizeFormat(bytes, decimals = 0) {
  if (bytes === 0) return "0B";
  const k = 1024;
  const dm = decimals < 0 ? 0 : decimals;
  const sizes = ["B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];
  const i = Math.floor(Math.log(bytes) / Math.log(k));
  return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + sizes[i];
}
728x90

댓글