Forum Programmation.perl Avoir l'entier de la division

Posté par  .
Étiquettes : aucune
0
10
déc.
2009
Bonjour,

Newbies en perl, j'essaye d'introduire un division dans une modification de script. Celle ci fonctionne mais me donne un chiffre à virgule.

for ( $u = 1 ; $u <= $maxUser ; $u++ ) {
# Average with the upper number
$userCheckOutaverage[$u] = $userCheckOutElapsed[$u] / $maxFeat ;
WriteToScreenAndFile( \*REPORTFILE, sprintf( '%-30s %5d %15ss ',
$userName[$u], $userCheckOutTotal[$u], $userCheckOutaverage[$u] ) ) ;
}

Comment faire pour que $userCheckOutaverage[$u] soit un entier sans virgule?
  • # STFW NOOB.

    Posté par  . Évalué à 4.

    http://tinyurl.com/yax3spv

    THIS IS JUST A PLACEHOLDER. YOU SHOULD NEVER SEE THIS STRING.

    • [^] # Re: STFW NOOB.

      Posté par  . Évalué à 1.

      Je l'avoue je me suis un peut mal exprimer .... C'est une mauvaise habitude de modifier mes posts après coup, ce n'est pas possible ici ...
      Sur Google j'ai cherché arrondir division perl sans succès ...

      Mais grace à ton Doc j'ai pu toruvé :

      $userCheckOutaverage[$u] = int($userCheckOutElapsed[$u] / $maxFeat) ;


      Encore Merci
      • [^] # Re: STFW NOOB.

        Posté par  (site web personnel) . Évalué à 1.

        int() ne fait que tronquer apres la virgule.
        les 2 solutions courantes sont:

        - int ($ton_nombre + 0.5)
        - utiliser printf/sprintf: printf("%.0f", $ton_nombre);
    • [^] # Re: STFW NOOB.

      Posté par  . Évalué à 4.

      J'aime tellement cette façon de proposer des recherches google, c'est hilarant a chaque fois :D
    • [^] # the web is for newbies who can't read the manual

      Posté par  (site web personnel) . Évalué à 3.

      $ perldoc -q round

      pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

  • # boucles

    Posté par  . Évalué à 2.

    Une remarque aussi, en perl on préfère souvent écrire les boucles avec un foreach. Ta boucle devient ici :

    foreach $u (1..$maxUser) {
    ....
    }
    • [^] # Re: boucles

      Posté par  . Évalué à 2.

      J'ai lu il y a bien longtemps, je ne sais plus où, que foreach allait être obsolète, et qu'Il fallait utiliser for à la place, du coup j'ai perdu l'habitude de l'utiliser.

      Mais heureusement on peut utiliser la syntaxe de foreach :-)

      for my $var (@array) {
      ...
      }

      (le my est en bonus, j'utilise le pragma strict et j'en suis fier)
  • # 2 possibilités

    Posté par  . Évalué à 1.

    - Tu peux diviser et arrondir ensuite ;
    - tu peux t'arranger pour toujours avoir un résultat entier en enlevant le reste de la division avant de faire la division. il suffit de remplacer A/B par (A - (A modulo B))/B. Par contre ça risque d'être moins performant comme méthode !?
    • [^] # Re: 2 possibilités

      Posté par  . Évalué à 1.

      Merci pour tous ces commentaires cela me fais progresser....

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.