Arrondi personnalisé

oguruma

XLDnaute Occasionnel
Pour faire suite à un post à ce propos, voici la fonction LAMBDA.

Ce classeur rappelle la démarche à suivre pour effectuer un arrondi selon le nombre décimales voulues.
Exemple
1690751432311.png


Pour ceux qui n'ont pas O365 voir la formule de la "mort"
=(ENT(((B4+(5/10 ^( B$3 + 1))) * (10 ^ B$3))))/(10 ^ B$3)

B4 : Cellule contenant la valeur à arrondi
B$3 : Nbr de décimales souhaitées (pas fait dans le classeur mais je préconise une cellule nommée pour plus de lisibilité)
Oui.... les puissances de 10 sont toujours actualité même en bureautique :)

La formule Lambda : bien une fois que l'on a mis au point la formule de "la mort" sa transcription en Lambda est facile
=LAMBDA(v;d;(ENT(((v+(5/10 ^( d + 1))) * (10 ^ d))))/(10 ^ d))(B4;B3)

et la formule dans le champ nommé : =LAMBDA(v;d;(ENT(((v+(5/10 ^( d + 1))) * (10 ^ d))))/(10 ^ d))
Nom de la formule Lambda : =µArrondi(B4;B3)
 

Pièces jointes

  • Lambda_Arrondi_V1.0.xlsx
    12.8 KB · Affichages: 1

ALS35

XLDnaute Occasionnel
Bonjour à tous,
Je plussoie tout à fait la remarque de Dranreb, quel intérêt par rapport à la fonction ARRONDI qui fait bien le job ??
=ARRONDI(B4;B$3)
Cordialement
 

oguruma

XLDnaute Occasionnel
Hi,
En effet une main un peu lourde sur les parenthèses et la factorisation des puissances de 10 loupée. L'heure tardive du post est-elle responsable de ce manque de clairvoyance. Donc bien Vu de ta part.

J'en ai profité pour sortir une version corrigée suite à ta remarque qui se trouve en PJ.
1690792046489.png


La méthode que j'expose arrondi toujours par excès, c-a-d à la borne supérieure.
Dans les calculs commerciaux c'est cette méthode qui est retenue. Buisiness is Business €€€€ :) et sur plusieurs milliers de transactions le gain n'est pas neutre ;)

Pour répondre à la question "intérêt ?" : la cible initiale était à but pédagogique pour expliquer le fonctionnement d'un arrondi. On a oublié que tout ceci se règle via les puissances de 10 avec le complément à 0.5.

Et aussi un vieux réflexe du passé car ancien COBOLIST où dans les anciennes versions du COBOL l'arrondi n'était pas toujours juste on était obligé d'avoir sa petite routine déclarée en LINKAGE-SECTION ou faire appel à un petit module assembleur développé par les ingénieurs système MVS qu'il fallait intégrer dans les options du JCL de compilation puis jongler avec les clauses PICTURE COMP-3 pour le stockage en décimal packé. Mais là... j'en ai peut-être perdu ;).

Là au moins avec ta collaboration on a remis "le facteur sur son vélo" ;)
 

Pièces jointes

  • Lambda_Arrondi_V1.0.1.xlsx
    13.6 KB · Affichages: 1
Dernière édition:

ALS35

XLDnaute Occasionnel
Re,
À force de regarder derrière soi et pas devant, on finit toujours par rater la marche !

La méthode que j'expose arrondi toujours par excès, c-a-d à la borne supérieure.
Non, avec ta formule dantesque ou la fonction simple d'Excel, l'arrondi se fait à la valeur la plus proche
15,12 est arrondi à une décimale à 15,1,
15,17 est arrondi à une décimale à 15,2
Par ailleurs Excel propose également des fonctions d'arrondi par défaut ou par excès : ARRONDI.INF et ARRONDI.SUP
 

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Et aussi un vieux réflexe du passé car ancien COBOLIST où dans les anciennes versions du COBOL l'arrondi n'était pas toujours juste on était obligé d'avoir sa petite routine déclarée en LINKAGE-SECTION ou faire appel à un petit module assembleur développé par les ingénieurs système MVS qu'il fallait intégrer dans les options du JCL de compilation puis jongler avec les clauses PICTURE COMP-3 pour le stockage en décimal packé. Mais là... j'en ai peut-être perdu ;).
JCL, MVS, voilà des noms que je n'avais plus entendu depuis... quelques années ! ;)
A cela s'ajoutaient d'autres acronymes comme PL/1 et au tout début il y avait l'IPL...🦕
 

oguruma

XLDnaute Occasionnel
Bonjour,


JCL, MVS, voilà des noms que je n'avais plus entendu depuis... quelques années ! ;)
A cela s'ajoutaient d'autres acronymes comme PL/1 et au tout début il y avait l'IPL...🦕
Hi, je vois que nous sommes de la même époque, arrivé à la fin de la carte perforée, j'ai encore connu les bandes avec les calculs de GAP pour optimiser l'espace occupé sur la bande.

En effet, PL1 avec DL1. PL1 un excellent langage....COBOL/DB2/CLIST/REXX/JESS2/OPC/SDSF/IEBFR14 etc.... ça c'est de la vraie informatique ou encore VM/CMS sous 4381
Les grands comptes comme les banques sont toujours sous MVS et les compétences dans ce domaine se font rares.... car ça n'est plus enseigné. Les profs de fac actuels tirent à boulets rouges sur ces environnements. Ils ne connaissent que Java et JavaScrpt....et aussi Python.
ça c'était avant
J'ai toujours dit "le Dynosaure n'est pas mort. "
Va traiter une paie en Java.... :D lol
J'interviens encore régulièrement dans cet environnement en tant que chef de projet.
ps : bon réponse hors sujet par rapport au post initial mais pour les anciens c'est toujours un plaisir d'en parler
 

Discussions similaires

Réponses
1
Affichages
1 K

Statistiques des forums

Discussions
312 211
Messages
2 086 286
Membres
103 170
dernier inscrit
HASSEN@45