Convertion octets en Mo
Publié : sam. 10/mai/2014 12:40
Bonjour à tous,
Je suis en train de faire un programme avec la version 5.22 pour calculer la taille d'un répertoire.
Voici ma fonction qui traduit la taille en texte:
Au lieu d'utiliser StrF(Taille/1048576 ,2) je voudrais remplacer le nombre de chiffre après la virgule en fonction du résultat...J'ai trouvé ceci sur internet:
Pour exemple, la taille de mon dossier fait 53.869.272 octets soit 51.37 Mo. Si je prends l'exemple trouvé sur internet, la fonction me retourne 51.4 ce qui veut dire que le résultat est arrondi.
Il n'y a pas un moyen d'éviter d'arrondir afin d'avoir le résultat escompté soit 51.37?
Je ne sais pas si je me fais bien comprendre...
Merci à tous pour vos réponse(s) et bonne journée!
Je suis en train de faire un programme avec la version 5.22 pour calculer la taille d'un répertoire.
Voici ma fonction qui traduit la taille en texte:
Code : Tout sélectionner
Procedure.s Convertion(Item)
Protected Txt.s
Select Item
Case 1:Taille=TailleRepertoire
Case 2:Taille=TailleFichiers
EndSelect
;unité sert à savoir dans qu'elle unité on veut convertir
Select Unite
Case 1;Go
reste=Taille%1073741824
If reste>0:Txt.s=StrF(Taille/(1073741824),2) :Else:TexteGo.s=StrF(Taille/(1073741824),0):EndIf:Txt=Txt+" Go"
Case 2;Mo
reste=Taille%1048576
If reste>0:Txt=StrF(Taille/1048576 ,2) :Else:Txt=StrF(Taille/1048576 ,0):EndIf:Txt=Txt+" Mo"
Case 3;Ko
reste=Taille%1024
If reste>0:TexteKo.s=StrF(Taille/1024 ,2) :Else:TexteKo.s=StrF(Taille/1024 ,0):EndIf:TexteKo=TexteKo+" Ko"
Case 4:Txt=StrF(Taille)+" octets"
EndSelect
ProcedureReturn Txt
EndProcedure
Code : Tout sélectionner
If Taille >= 1000 : Unite = 1 : NbDecimals = 2 : EndIf
If Taille >= 10000 : Unite = 1 : NbDecimals = 1 : EndIf
If Taille >= 1000000 : Unite = 2 : NbDecimals = 2 : EndIf
If Taille >= 10000000 : Unite = 2 : NbDecimals = 1 : EndIf
If Taille >= 1000000000 : Unite = 3 : NbDecimals = 2 : EndIf
If Taille >= 10000000000 : Unite = 3 : NbDecimals = 1 : EndIf
Txt=StrF(Taille/1048576 ,NbDecimals)
Il n'y a pas un moyen d'éviter d'arrondir afin d'avoir le résultat escompté soit 51.37?
Je ne sais pas si je me fais bien comprendre...
Merci à tous pour vos réponse(s) et bonne journée!