Je pris un peu astucieux de code lors de la recherche de quelque chose à abrégez et la taille des octets d'étiquette (par exemple 1024 octets -> « 1 KB ») et il a changé un peu en fonction de vos besoins (1000 -> "1 K").
function abbreviate_number(num) {
var sizes = ['', 'K', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y'];
if (num < 1000) return num;
var i = parseInt(Math.floor(Math.log(num)/Math.log(1000)));
return ((i == 0) ? (num/Math.pow(1000, i)) : (num/Math.pow(1000, i)).toFixed(1)) + ' ' + sizes[i]; // use .round() in place of .toFixed if you don't want the decimal
};
Juste pour référence, voici ce dont j'avais besoin.
function format_bytes(bytes) {
var sizes = ['Bytes', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB'];
if (bytes == 0) return '';
if (bytes == 1) return '1 Byte';
var i = parseInt(Math.floor(Math.log(bytes)/Math.log(1024)));
return ((i == 0)? (bytes/Math.pow(1024, i)) : (bytes/Math.pow(1024, i)).toFixed(1)) + ' ' + sizes[i];
};
Notez que 'GMk' suffisent pour 32 bits, pour 64 bits, vous aurez besoin de 'EPTGMk'. – schnaader
@schnaader: tu as raison, il est facile d'ajouter plus de multiplicateurs, laissés en exercice. – Toto