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 :

chiffre apres la virgule [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Par défaut chiffre apres la virgule
    bonjour
    j'aimerais savoir si c'est possible de faire celà:
    si le chiffre est inferieur à 1 comme 0.852A j'aimarais avoir 852 Ma
    voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $desc=preg_replace('#0(\.)([0-9]+)(A| A)#','$2 Ma',$desc);
    j'aimerais que
    s'il y a un chiffre apres la virgule ca affiche 00
    s'il y a 2 chiffre apres la virgule ca affiche 0
    s'il y a 3 chiffre apres la virgule ca affiche rien
    exemple :
    0.8 donc ca affiche 800
    0,83 donc ca affiche 830
    0.855 donc ca affiche 855
    j'espere que quelqu'un me comprend .
    merci d'avance

  2. #2
    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
    4
    5
    6
    7
    <?php
    $desc = "0.852A";
    $float = floatval($desc);
    if ($float < 1) {
       $desc = $float * 1000 . " Ma";
    }
    echo $desc;
    Mais ca serait plus propre de ne pas stocker ton unité et d'avoir une fonction qui se charge de l'affichage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
     
    function affiche($valeur) {
    if ($valeur < 1) {
       $display = $valeur * 1000 . " Ma";
    }
    else {
       $display = $valeur . " a";
    }
    return $display;
    }
     
    echo affiche(0.85);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Par défaut
    merci sabotage
    mais si j'ai
    $desc="bonjour sabotage j'ai 0.825A";
    j'aimerais bien que ca m'affiche
    "bonjour sabotage j'ai 825 Ma"
    mais ta formule ne marche pas

  4. #4
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    Salut,

    L'idéal est donc d'utiliser la fonction preg_replace_callback().
    Le comportement de preg_replace_callback() est presque identique à celui de preg_replace(), hormis le fait qu'à la place du paramètre replacement, il faut spécifier une fonction de rappel callback qui sera appelée, avec les éléments trouvés en arguments.
    Ce qui nous donne...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $desc='Bonjour Sabotage j\'ai 0.825A ou peut-être bien 0.1 A.';
     
    // Fonction de callback
    function Convert($m){
    	return str_pad($m[1],3,'0',STR_PAD_RIGHT).' Ma';
    }
     
    $desc=preg_replace_callback('/\b0\.(\d+) ?A\b/','Convert',$desc);
     
    echo $desc;
    Voir aussi str_pad() utilisée dans l'exemple. Nous pouvons aussi utiliser la fonction sprintf().

  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
    Je persiste a dire que ce n'est pas une bonne façon de voir la chose.

    Par exemple si j'écris "ça fait 0.1 après calcul"
    Je me retrouve avec "ça fait 100 Maprès calcul"
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Par défaut
    j'ai peu être une piste avec preg_macht et preg_replace .
    j'ésaie de tester avant

  7. #7
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    Citation Envoyé par sabotage
    si j'écris "ça fait 0.1 après calcul"
    Je me retrouve avec "ça fait 100 Maprès calcul"
    Non car le motif contient l'assertion \b (limite de mot).

    Citation Envoyé par bigs3232
    une piste avec preg_match et preg_replace.
    preg_replace_callback().

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

Discussions similaires

  1. arrondir un nombre à 2 chiffres après la virgule
    Par El Saigneur dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 01/02/2005, 09h36
  2. Commande pour afficher des chiffres apres la virgule
    Par manar dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 23/09/2004, 19h28
  3. Chiffres après la virgule figés
    Par bondjames dans le forum Bases de données
    Réponses: 6
    Dernier message: 11/03/2004, 00h09
  4. [MFC] Nombre de chiffres après la virgule
    Par karl3i dans le forum MFC
    Réponses: 3
    Dernier message: 27/01/2004, 14h04
  5. Nb de chiffres après la virgule ?
    Par Thcan dans le forum C
    Réponses: 10
    Dernier message: 17/09/2003, 22h49

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