Arrondir des prix de manière évolutive par palier

Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
DalaiLama
Messages: 4
Enregistré le: 24 Mai 2018, 18:22

Arrondir des prix de manière évolutive par palier

par DalaiLama » 24 Mai 2018, 18:59

Bien le bonsoir,

Nouveau sur le forum, et n'ayant fait que très peu de Maths depuis ma sortie de lycée, j'aurais besoin de votre aide pour m'aiguiller s'il vous plaît.

Je souhaiterais pouvoir entrer un prix dans une devise de référence (prenons l'€), et avoir en sortie, des résultats dans des devises différentes, tout en étant capable d'arrondir ces résultats de façon pertinente.

On va prendre par exemple les taux de change pour ces 4 devises (Je vous épargne les 100+ autres) :
- 1EUR = 0,000911776300 XAU
- 1EUR = 1,178262844000 USD
- 1EUR = 11,121224738000 MAD
- 1EUR = 735,394047009300 CLP

Le prix (P) en € que je pourrai rentrer pourra prendre ces valeurs :
- P <= 50
- P >= 0

Mon niveau de connaissances en mathématiques actuel me permet seulement d'effectuer des arrondis à 0.25près, ou 0.5, ou à l'unité.

Cependant :
20EUR = 0.0180 XAU
Si je souhaite arrondir à 0.25 suppérieur, j'aurai en résultat :
20 EUR = 0.25 XAU
Ce résultat n'est pas convenable si je travaille avec des taux de change si bas.

Ce calcul peut-être logique si je travaille avec des devises similaires, comme ici , les EUR, et les USD.
20 EUR = 23.4565 USD
En arrondissant :
20 EUR = 23.5 USD.

Mais ça devient de nouveau illogique si je prend un taux très élevé, comme le EUR -> CLP.
Pour cette dernière monnaie, il serait bien plus pertinent d'arrondir à la dizaine par exemple.

Mon but serait donc d'avoir des calculs d'arrondis prenant en compte le taux de conversion entre 2 devises, suivant une logique similaire à celle-ci :
(Edit sur cette suite de nombre, la première n'avait pas de logique)
0.00025
0.0025
0.025
0.25
2.5
25
250
2500
25000
250000 etc etc... (Dans le cas où l'arrondi se ferait sur le premier quart).
Je ne demande pas de solution écrite texto, je préfère comprendre ce que je fais. Cependant, si vous connaissez des formules générales qui pourraient m'aider, ou si vous pouvez m'aiguiller dans une certaine direction, je vous serais vraiment reconnaissant...

Merci d'avance et bonne soirée :P
Modifié en dernier par DalaiLama le 25 Mai 2018, 16:34, modifié 1 fois.



DalaiLama
Messages: 4
Enregistré le: 24 Mai 2018, 18:22

Re: Arrondir des prix de manière évolutive par palier

par DalaiLama » 25 Mai 2018, 14:11

Bonjour !

J'ai pas mal planché sur le sujet, je travaille actuellement avec Excel.

Pour l'instant, j'ai ces informations :
PrixEuro
Taxes
Taux Conversion
PrixNonArrondi = PrixEuro * Taxes * TauxConversion

Pour trouver un arrondi évolutif, j'ai eu une idée qui m'a l'air intéressante : Les modulos. Mais je reste toujours sur le plus gros du problème.

Pour les personnes connaissant Excel, je pensais travailler avec la fonction Plafond.Math.

Description : Arrondit un nombre au nombre entier supérieur le plus proche ou au multiple le plus proche de l’argument précision en s’éloignant de zéro.

Exemples d'utilisation :
- PLAFOND.MATH(24.3 ; 5) -> Arrondit 24,3 à l’entier supérieur le plus proche multiple de 5 (25).

- PLAFOND.MATH(6.7) -> Arrondit 6,7 à l’entier le plus proche (7).

- PLAFOND.MATH(-8.1 ; 2) -> Arrondit -8.1 à l’entier supérieur le plus proche (vers zéro vu qu'on est dans les négatifs) multiple de 2 (-8).

Ma logique reste la même pour le résultat, je souhaiterais effectuer un arrondi sur le PrixNonArrondi par tranche de quart.

En représentation, on va prendre ce nombre :
ArrondiDynamique = 0 , 0 0 0 0 0 0 0 0 0 0 0 25 (dans le cas du premier quart sur un taux de conversion très bas).

Ma virgule d'arrondi se déplacerait dynamiquement de gauche à droite plus on arrive dans des taux de conversion élevés.

Dans mon cas, j'aurai ça : PLAFOND.MATH( PrixNonArrondi ; ArrondiDynamique).

Cependant, pour calculer cet ArrondiDynamique, je sèche.
J'ai essayé de faire énormément de calculs (qui n'ont pas tous de sens, mais quand on sèche, on tente des choses bizarres) :
Je suis persuadé que l'on peut récupérer cet arrondi que je recherche, encore une fois grâce à la fonction PLAFOND.MATH, mais il me manque le second paramètre.
ArrondiDynamique = PLAFOND.MATH(TauxConversion ; ...)

Si une âme charitable peut me filer un coup de main, je suis toujours dispo.

Je continue mes recherches en attendant.

Bonne journée !

pascal16
Membre Légendaire
Messages: 6663
Enregistré le: 01 Mar 2017, 13:58
Localisation: Angoulème : Ville de la BD et du FFA. gare TGV

Re: Arrondir des prix de manière évolutive par palier

par pascal16 » 25 Mai 2018, 14:20

Si je souhaite arrondir à 0.25 supérieur

soit p le prix

4p doit être un entier arrondi au supérieur

ça donne, façon mathématique (arrondi.sup(4*p))/4

le 4 peut être un paramètre modifiable suivant les cas, c'est très limitatif si on le laisse fixe

Avatar de l’utilisateur
Ben314
Le Ben
Messages: 21534
Enregistré le: 11 Nov 2009, 22:53

Re: Arrondir des prix de manière évolutive par palier

par Ben314 » 25 Mai 2018, 15:36

Salut,
Si vraiment tu veut faire un truc de ce style :
DalaiLama a écrit:0.00025
0.0025
0.025
0.25
0.5
0.75
1
2
3
5
10
20
50
100 etc. etc.
C'est à dire sans la moindre logique, alors a mon avis le plus simple, c'est d'utiliser de l'adressage indirect, c'est à dire d'aller chercher dans une table (à deux lignes ou deux colonnes sur une autre page de ton tableur) dans quel plage se situe ton nombre et d'en déduire (à l'aide de la deuxième ligne ou colonne) comment il doit être arrondi.

Par contre, tu pourrait évidement avoir une formule bien plus simple en utilisant une formule plus logique pour les arrondis, par exemple d'arrondir systématiquement avec 3 chiffres de précision :
321 , 578 317 => 322
1 , 354 749 => 1,35
54 962 , 354 => 55 000
etc...
Là, il te suffit de décaler la virgule en multipliant par 10^(partie_entière(log(x))+Cst) puis d'arrondir à l'entier le plus proche, puis de redécaler la virgule dans l'autre sens en divisant par la même puissance de 10.
Ou alors (et ça revient au même), tu utilise la fonction ARRONDI.AU.MULTIPLE en mettant comme deuxième paramètre un truc du style Cst x 10^(partie_entière(log(x))+Cst).
Qui n'entend qu'un son n'entend qu'une sonnerie. Signé : Sonfucius

DalaiLama
Messages: 4
Enregistré le: 24 Mai 2018, 18:22

Re: Arrondir des prix de manière évolutive par palier

par DalaiLama » 25 Mai 2018, 16:18

Hello,

J'étais un peu fatigué lorsque j'ai parlé de ces approximations hier. Je suis d'accord qu'il n'y avait rien de logique à ça après 5 secondes de réflexion ^^'.

Merci pour ta réponse dans tous les cas, je vais voir ce que ça donne en pratique.

- Edit : A quoi correspondent le "Cst" et le "x" ?

'o_o'

Avatar de l’utilisateur
Ben314
Le Ben
Messages: 21534
Enregistré le: 11 Nov 2009, 22:53

Re: Arrondir des prix de manière évolutive par palier

par Ben314 » 25 Mai 2018, 19:33

Dans la case A2, tu met un truc de ce style :
= ARRONDI.AU.MULTIPLE(A1 ; 0,05 * 10^PLANCHER(LOG10(A1)) )
- Si A1 contient 5 432 , 175 alors 0,05 * 10^PLANCHER(LOG10(A1)) = 0,05 * 1 000 = 50 donc la valeur est arrondie au multiple de 50 le plus proche, c'est à dire à 5 450.
- Si A1 contient 0,087 652 481 alors 0,05 * 10^PLANCHER(LOG10(A1)) = 0,05 * 0,01= 0,000 5 donc la valeur est arrondie au multiple de 0,000 5 le plus proche, c'est à dire à 0,087 5

Et tu met ce que tu veut à la place du 0,05 (y compris un truc contenu dans une case fixe qui te permet de modifier la précision quand bon te chante).
Qui n'entend qu'un son n'entend qu'une sonnerie. Signé : Sonfucius

DalaiLama
Messages: 4
Enregistré le: 24 Mai 2018, 18:22

Re: Arrondir des prix de manière évolutive par palier

par DalaiLama » 28 Mai 2018, 14:35

Holà tout le monde !

Merci pour vos réponses, grâce à votre aide, je suis parti sur une autre formule qui me permet d'avoir des arrondis pertinents :

On va prendre comme données supplémentaires :
Multiple = 0.005
Taxes = 1.03
TauxDeChange > 0
PrixRéférence = Prix en € (par exemple)..

PrixNonArrondi = PrixRéférence * Taxes * TauxChange


PrixArrondi = ARRONDI.INF( PrixNonArrondi / (Multiple * 10^(ARRONDI.INF(LOG10(PrixNonArrondi); 0))); 0) * Multiple * 10^(ARRONDI.INF(LOG10(PrixNonArrondi); 0))

Sur plus de 160 devises et une dizaine de prix différents, j'ai un écart moyen de 0.02% entre le prix arrondi et non arrondi, ce qui est parfait.

Je vais continuer de peaufiner ça de mon côté, merci à vous :)

 

Retourner vers ✯✎ Supérieur

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 98 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite