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

Programmation et administration système Perl Discussion :

Condition sur un nombre à virgule


Sujet :

Programmation et administration système Perl

Vue hybride

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

    Informations forums :
    Inscription : Octobre 2007
    Messages : 299
    Par défaut Condition sur un nombre à virgule
    Bonjour,


    J'aimerai faire une condition sur un nombre à virgule :
    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
    16
    17
    18
    19
    20
    21
    22
    #!/usr/bin/perl
    use strict;
    use warnings;
     
    my $infile= 'MATLAB.log';
    my @prstat= `prstat 0 1 | grep -v PID | grep -v Total`;
    #print "@prstat \n";
     
    foreach my $line  (@prstat) {
            my @line=split (/\s+/,$line);
            #La colonne 10 doit contenir MATLAB
            if ($line[10] =~ /MATLAB/) {
                    print "Flag time :  $line[1] $line[8] $line[2] $line[10] $line[9]\n";
                    my @percent=split (/%/, $line[9] );
                    print "Flag pourcentage : $percent[0]\n";
                    if ( $percent[0] > 1) {
                            open (WRITE, ">>$infile");
                            print WRITE "Flag time :  $line[1] $line[8] $line[2] $line[10] $line[9]\n";
                            close (WRITE);
                    }
            }
    }
    J'ai l'erreur suivante :
    Flag time : 16982 6:55:11 user1 MATLAB/66 0,1%
    Flag pourcentage : 0,1
    Argument "0,1" isn't numeric in numeric gt (>) at ./MATLAB_using.pl line 16.


    J'ai essayé une substitution de la virgule par un point mais ma variable $percent[0] prend la valeur dans ce cas....

    Merci de votre aide.

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 37
    Par défaut
    Si tu es sur que ton séparateur sera toujours une virgule, voici une version "bourrin":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    use strict;
    use warnings;
     
    my $Value = "0,1";
     
    my @test = split(/,/,$Value);
     
    $Value = join(".",@test);
     
    print "Ok\n" if ($Value < 1);
     
    exit 0;
    Je ne doute pas qu'une version plus élégante sera proposée...

  3. #3
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Je ne vois pas pourquoi un ne fonctionnerait pas ?

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 37
    Par défaut
    Apparemment il perd la notion de '0' quand on fait ça... J'ai récupéré 1 à la place de 0,1.

    J'ai du mal à comprendre pourquoi aussi, si quelqu'un a une idée


    A ben non ça passe bien, j'ai du me tromper sur la substitution... je me tais

  5. #5
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    As-tu affiché le résultat de la substitution ?

    Exemple qui fonctionne :
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ perl -e '$a="0,1";$a =~ s/,/./;print "a=$a\n", "a*2 = ", $a * 2, "\n"'
    a=0.1
    a*2 = 0.2

    J'ajoute donc : as-tu affiché $percent[0] avant ET après la substitution ?

  6. #6
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 299
    Par défaut
    Ce que je ne comprend pas cela fonctionne en ligne de commande ....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     perl -e 'my $value="3,1%"; my @percent=split (/%/,$value); if ( $percent[0] > 1) { print "$value\n";}'
    3,1%
     
     
    perl -e 'my $value="0,1%"; my @percent=split (/%/,$value); if ( $percent[0] > 1) { print "$value\n";}'

  7. #7
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    C'est pour ça que je t'ai demandé
    Citation Envoyé par Philou67430 Voir le message
    J'ajoute donc : as-tu affiché $percent[0] avant ET après la substitution ?
    L'erreur se trouve peut-être ailleurs ...

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 13/01/2015, 10h06
  2. [XL-MAC 2011] Condition sur le nombre d'items contenus dans une liste déroulante
    Par xixil dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/03/2013, 18h55
  3. [JASPER] Condition sur le nombre de page
    Par Piolet dans le forum Jasper
    Réponses: 0
    Dernier message: 26/02/2009, 17h29
  4. Nombre de cellule Si 2 conditions sur deux plages
    Par CNANJO dans le forum Excel
    Réponses: 1
    Dernier message: 24/12/2008, 07h17
  5. Réponses: 11
    Dernier message: 01/05/2007, 00h15

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