IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Répartir un montant total sur des mois


Sujet :

Algorithmes et structures de données

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 83
    Points : 43
    Points
    43
    Par défaut Répartir un montant total sur des mois
    Bonjour,

    J'ai un montant (par exemple 235€) et une date de début (par ex 01/10/05) et une date de fin (par ex 31/03/06).
    Je souhaite répartir les 235€ sur les 6 mois .
    Si je fais 235/6 j'obtiens 39,166666667. Or je veux obtenir des chiffres avec 2 chiffres apres la virgule soit qqchose comme 39,17 39,17 39,17 39,17 39,16 39,16.


    NB. J'ai déjà posté ce sujet sur le forum VB mais si qqn a une idée sur ce forum : merci de votre aide.

  2. #2
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Ben ce n'est pas un algorithme que tu veux mais bien une fonction toute faite d'un langage ("VB peut être) qui arrondit une valeur decimale et çà m'etonnerai que tu ne trouve pas çà sur le forum VB tout autre langage même. Le double post n'était pas necessaire
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 83
    Points : 43
    Points
    43
    Par défaut
    euh ben non justement.
    Ok en VB il existe une fonction permettant d'arrondir.
    Là le pb c'est de savoir combien de fois il faut mettre 39,17 et combien de fois il faut mettre 39,16: ce n'est pas juste une question d'arrondi ;-)

  4. #4
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    Soit M le montant en € à répartir, N le nombre de mois.
    Il faut calculer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    m = 100 * M
    q = m / N
    r = m % N
    avec / division entière, % modulo
    r est le reliquat à répartir en centimes d'€ (0 <= r < N)
    Affichage des résultats :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    float f = q / 100.0
    for (int i = 0; i < N - r; i++) {
      print(f);
    }
    float f = (q + 1) / 100.0
    for (int i = 0; i < r; i++) {
      print(f);
    }

  5. #5
    Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 83
    Points : 43
    Points
    43
    Par défaut
    Super : ca fonctionne. Je l'ai re-traduit enVB.
    Pour ceux que ca interesse : cf le forum VB.

    Encore merci herve91

    Allb

  6. #6
    Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 83
    Points : 43
    Points
    43
    Par défaut
    Re-bonjour,

    En fait ca ne fonctionne pas pour tous les cas et impossible de trouver pourquoi.
    Exemples qui ne fonctionnent pas :
    montant 504.92 date_debut = 01/07/05 et date_fin = 30/06/06 ->505.04
    montant 360.45 date_debut = 01/07/05 et date_fin = 30/06/06 ->360.57
    montant 1108.79 date_debut = 01/06/05 et date_fin = 30/11/05 ->1108.85

    Exemple qui fonctionne :
    montant 504.92 date_debut = 01/07/05 et date_fin = 31/07/06

    Help!!!
    merci

  7. #7
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    J'ai vérifié le 1er cas 504.92 à répartir sur 12 mois et je trouve bien le résultat escompté : 42,07 sur 4 mois puis 42,08 sur 8 mois

    Rappel des calculs :
    M=504.92
    N=12
    m = 100 * M = 50492
    q = m / N = 50492 / 12 = 4207
    r = m % N = 50492 % 12 = 8

    N - r = 4
    q + 1 = 4208

    donc 42.07 sur 4 mois puis 42.08 sur 8 mois, ce qui donne bien :
    42.07 * 4 + 42.08 * 8 = 504.92

  8. #8
    Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 83
    Points : 43
    Points
    43
    Par défaut
    ok....mea culpa. J'ai trouvé ce qui clochait. Je faisais :
    q= 50492/12 = 4207,666666667 que j'arrondissait à 4207,67. Et en fait il suffit de prendre la partie entière de 4207,66667 ce qui donne 4207 et après j'ai bien le résultat attendu.

    Merci encore à toi hervé91

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Vxi3] Somme sur des mois cumulés
    Par nawal59 dans le forum Webi
    Réponses: 7
    Dernier message: 23/05/2012, 11h30
  2. requete oracle pour obtenir des montant sur 12 mois glissant
    Par gueulederack dans le forum Oracle
    Réponses: 7
    Dernier message: 16/06/2011, 15h06
  3. [XL-2003] calculer des valeurs décalées (sur des mois glissants)
    Par filouhse dans le forum Excel
    Réponses: 1
    Dernier message: 19/05/2010, 20h02
  4. [AC-2007] Total Cumulé des mois par années
    Par btks59 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 20/07/2009, 10h07
  5. Réponses: 14
    Dernier message: 05/11/2007, 14h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo