JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Formatage d'un nombre Jeu 18 Aoû 2016 - 21:45 | |
| Plus précisément, d'une taille mémoire, pour affichage (taille d'un fichier, etc.) C'est élémentaire, mais bon, c'est un petit devoir de vacances ! - Code:
-
DIM v,mil$,virg$,u$,nd% v = 7123456789 mil$ = " ": ' séparateur de milliers virg$ = ",": ' séparateuir partie entière/partie fractionnaire u$ = "kb": ' unité nd% = 2: ' nombre de décimales FormatNombre(v,mil$,virg$,u$,nd%) MESSAGE CLIPBOARD_STRING_PASTE$+" "+u$ TERMINATE ' ============================================================================== SUB FormatNombre(v,mil$,virg$,u$,nd%) ' Conversion du nombre entier v (taille mémoire) en chaîne ascii ' mil$ = séparateur de milliers: "", ou " ", ou "." ' vir$ = séparateur pour les nombres fractionnaires: "." ou "," ' u$ = unités: ' "b" octets (implicite), "kb" kilo-octets, "mb" mega-octets, "gb" giga-octets ' nd% = nombre maxi de décimales DIM_LOCAL n$,a$,b$,i% n$ = STR$(v): u$ = UPPER$(u$) IF u$ = "KB" THEN n$ = STR$(v/1000) IF u$ = "MB" THEN n$ = STR$(v/1000000) IF u$ = "GB" THEN n$ = STR$(v/1000000000) a$ = n$: b$ = "" i% = INSTR(n$,".") IF i% > 0 a$ = LEFT$(n$,i%-1): ' partie entière b$ = RIGHT_POS$(n$,i%+1): ' partie décimale IF LEN(b$)>nd%: ' dernier chiffre arrondi éventuel à la valeur supérieure b$ = LEFT$(b$,nd%+1): i% = VAL(b$)/10: b$ = STR$(i%) END_IF END_IF i% = 3 WHILE LEN(a$) > i% a$ = LEFT$(a$,LEN(a$)-i%)+mil$+RIGHT$(a$,i%) i% = i%+3+LEN(mil$) END_WHILE IF nd% > 0 IF LEN(b$) > nd% THEN b$ = LEFT$(b$,nd%) IF b$ <> "" THEN b$ = virg$ + b$: a$ = a$ + b$ END_IF CLIPBOARD_STRING_COPY a$ END_SUB ' ============================================================================== Le nombre à formater est en binaire dans v On choisit le type de séparateur de milliers éventuel, le type de séparateur partie entière/partie fractionnaire, l'unité (octet, Kb, Mb, Gb) et le nombre maxi de décimales du résultat. S'il y a une partie fractionnaire, elle est arrondie éventuellement au chiffre supérieur. Le résultat est rendu sous forme de chaîne Ascii dans le presse-papier. | |
|