Berikut adalah prototipe untuk mengonversi angka menjadi string yang dapat dibaca sehubungan dengan standar internasional baru.
Ada dua cara untuk merepresentasikan angka besar: Anda bisa menampilkannya dalam kelipatan 1000 = 10 3 (basis 10) atau 1024 = 2 10 (basis 2). Jika Anda membagi dengan 1000, Anda mungkin menggunakan nama awalan SI, jika Anda membagi dengan 1024, Anda mungkin menggunakan nama awalan IEC. Masalahnya dimulai dengan membaginya dengan 1024. Banyak aplikasi menggunakan nama awalan SI untuk itu dan beberapa menggunakan nama awalan IEC. Situasi saat ini berantakan. Jika Anda melihat nama awalan SI, Anda tidak tahu apakah jumlahnya dibagi 1000 atau 1024
https://wiki.ubuntu.com/UnitsPolicy
http://en.wikipedia.org/wiki/Template:Quantities_of_bytes
Object.defineProperty(Number.prototype,'fileSize',{value:function(a,b,c,d){
return (a=a?[1e3,'k','B']:[1024,'K','iB'],b=Math,c=b.log,
d=c(this)/c(a[0])|0,this/b.pow(a[0],d)).toFixed(2)
+' '+(d?(a[1]+'MGTPEZY')[--d]+a[2]:'Bytes');
},writable:false,enumerable:false});
Fungsi ini mengandung no loop
, jadi mungkin lebih cepat dari beberapa fungsi lainnya.
Pemakaian:
Awalan IEC
console.log((186457865).fileSize()); // default IEC (power 1024)
//177.82 MiB
//KiB,MiB,GiB,TiB,PiB,EiB,ZiB,YiB
Awalan SI
console.log((186457865).fileSize(1)); //1,true for SI (power 1000)
//186.46 MB
//kB,MB,GB,TB,PB,EB,ZB,YB
Saya menetapkan IEC sebagai default karena saya selalu menggunakan mode biner untuk menghitung ukuran file ... menggunakan kekuatan 1024
Jika Anda hanya ingin salah satu dari mereka dalam fungsi oneliner pendek:
SI
function fileSizeSI(a,b,c,d,e){
return (b=Math,c=b.log,d=1e3,e=c(a)/c(d)|0,a/b.pow(d,e)).toFixed(2)
+' '+(e?'kMGTPEZY'[--e]+'B':'Bytes')
}
//kB,MB,GB,TB,PB,EB,ZB,YB
IEC
function fileSizeIEC(a,b,c,d,e){
return (b=Math,c=b.log,d=1024,e=c(a)/c(d)|0,a/b.pow(d,e)).toFixed(2)
+' '+(e?'KMGTPEZY'[--e]+'iB':'Bytes')
}
//KiB,MiB,GiB,TiB,PiB,EiB,ZiB,YiB
Pemakaian:
console.log(fileSizeIEC(7412834521));
jika Anda memiliki beberapa pertanyaan tentang fungsi, tanyakan saja