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

Langage PHP Discussion :

Convertir un montant en Keuro


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Expert technique
    Inscrit en
    Septembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert technique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 328
    Par défaut Convertir un montant en Keuro
    Bonjour,

    Je cherche le moyen de convertir n'importe quel montant en K€ avec en plus une règle d'arrondi.

    Exemple:
    - SI le montant est de 2109.52, je voudrai afficher juste 2K€
    - Si le montant est de 2509, je voudrai afficher 3K€
    - Si le montant est de 200.36, je voudrai afficher 0K€
    - Si le montant est de 715, je voudrai afficher 1K€
    - Si le montant est 1250700.32, je voudrai afficher 1 000K€
    - Si le montant est de 2575300, je voudrai afficher 3 000K€

    Bref vous m'avez compris je pense. En utilisant les fonctions round et number_format je pense pouvoir arriver à mes fins, mais assez fastidieux. Avez vous une idée ?

  2. #2
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    Simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $keuro = round( $montant / 1000 );
    Non ?

  3. #3
    Membre éclairé
    Profil pro
    Expert technique
    Inscrit en
    Septembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert technique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 328
    Par défaut
    Oui, ça je l'avais déjà, mais j'ai un problème avec l'arrondi sur millions.

    Si 2109, ça donne 2 K€ --> OK
    Si 2501732, ça donne 2 502K€ --> KO --> ça devrait donner 3 000
    Si 2332852, ça donne 2 502K€ --> KO --> ça devrait donner 2 000

    Je pense qu'il va falloir passer par plusieurs étapes.

  4. #4
    Membre Expert

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Par défaut
    Voici ce que je te propose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    /**
     * Arrondi le montant en fonction de son montant 
     * @param float $montant Montant à arrondir
     * @return string
     */
    function displayMontant($montant) {
        $kMontant = round($montant/1000);
        $length =  strlen((string)$kMontant);
        $kMontantArrondi = round($kMontant,-($length-1));
     
        return number_format($kMontantArrondi,0,'.',' ')."K€";
    }
     
    echo displayMontant(1250700.32)."<br>"; //Affiche 1 000K€
    echo displayMontant(715.32)."<br>"; //Affiche 1K€

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $x = 1250700.32;
    $len = max(4, strlen(round((string)$x)));
    echo str_pad(round($x / (pow(10, $len-1))), $len - 3, '0');
    edit : grrrr bien vu Spartacusply
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut,

    PHP fait ce genre de chose nativement mis à part le fait que sa méthode d'arrondi ne soit pas linéaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $x = [2109.52, 2509, 200.36, 715, 1250700.32, 2575300];
    $y = [];
     
    foreach ($x as $n) {
        $p   = ($n >= 1E6) ? -6 : -3;
        $y[] = number_format(round($n, $p) / 1000, 0, '.', ' '). ' K€';
    }

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Je sais pas pourquoi j'ai cherché , je savais bien qu'une certaine personne allait nous trouver un truc poids plume.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. [VB.NET]Convertir un montant numérique en lettres
    Par kinganasius dans le forum Windows Forms
    Réponses: 5
    Dernier message: 27/07/2009, 20h13
  2. Réponses: 1
    Dernier message: 04/06/2007, 07h51
  3. Réponses: 1
    Dernier message: 21/03/2007, 10h07
  4. Convertir un montant en lettre dans un état Crystal reports
    Par gopal dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 10/05/2006, 13h33
  5. ?Convertir le montant de ma facture en lettres?
    Par Redhouane dans le forum Bases de données
    Réponses: 1
    Dernier message: 26/05/2004, 00h21

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