CALCUL ORDRE DE GRANDEUR AUTOMATIQUE POUR TAILLE DE FICHIER (OCTET, KO, MO, GO,

Signaler
Messages postés
399
Date d'inscription
jeudi 31 janvier 2002
Statut
Membre
Dernière intervention
6 septembre 2004
-
Messages postés
39
Date d'inscription
vendredi 15 juillet 2005
Statut
Membre
Dernière intervention
4 juin 2017
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/23957-calcul-ordre-de-grandeur-automatique-pour-taille-de-fichier-octet-ko-mo-go-to

Messages postés
39
Date d'inscription
vendredi 15 juillet 2005
Statut
Membre
Dernière intervention
4 juin 2017

Une toute petite précision concernant la norme sur les unités mémoires des machines :
1 Ko avec un K majuscule c'est 1024 octets.
1 ko avec un k minuscule c'est 1000 octets.
Au delà, ce ne sont plus des puissance de 2 qui servent de multiplicateurs.
Ainsi 1M "Méga" c'est 1000 kilo et 1G "Giga" c'est 1000 méga de même que actuellement, 1T "Téra" c'est 1000 giga.

Ainsi :
1 To = 1000*1000*1000*1024 octets.
1 Go = 1000*1000*1024 octets.
1 Mo = 1000*1024 octets.
1 Ko = 1024 octets.

Pour info, même si globalement cela n'a que peu d'importance.
Messages postés
1662
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1
J'ai arrangé ça, tu as raison. J'ai expliqué pourquoi dans l'Explication finale. J'ai mis un count, c'est sur que j'aurais pu mettre aussi un 4 pour améliorer la rapidité.
J'ai rajouté une fonction d'arrondissement à la virgule... Je l'avais fait il y a longtemps mais je ne l'avais pas mis à jour ici :)
Donc le chiffre que vous entrez est le nombre de chiffre après la virgule que vous voulez ou -1 si vous ne voulez pas d'arrondi.
Messages postés
8
Date d'inscription
mardi 30 mars 2004
Statut
Membre
Dernière intervention
16 octobre 2006

Il fallait bien sûr lire :

while(($octet>=1024) && ($count < 4)) {

($count inférieur à 4).
Maudite touche majuscule... :P
Messages postés
8
Date d'inscription
mardi 30 mars 2004
Statut
Membre
Dernière intervention
16 octobre 2006

Merci pour cette sympathique "petite" fonction.

Par contre je me permet d'ajouter une petite correction (sans doute un oubli) :

Il faut remplacer la ligne :
while($octet>=1024){

Par :
while(($octet>=1024) && ($count > 4)) {

Sinon on a une erreur d'affichage (variable non définie) et il manque l'unité si on dépasse la dizaine de Tera octects. Bon ça doit pas arriver souvent mais comme cette fonction est générique et peut être utilisée pour autre chose qu'afficher des tailles de fichiers je pense qu'il est bon de corriger (de toute façon autant faire au mieux, non?).
Afficher les 14 commentaires